Entity API 모듈 을 사용하는 것이 큰 도움이되고 코드를 더 읽기 쉽게 만듭니다. 노드의 언어와 필드의 언어가 다를 수 있으므로 위 코드는 항상 작동하지는 않습니다.
엔티티 API 모듈 및 랩퍼를 사용하면 다음 코드를 사용할 수 있습니다.
$node_wrapper = entity_metadata_wrapper('node', $node);
$field_val = $node_wrapper->field_test->value();
이것은 방탄이어야합니다. 엔티티 모듈을 사용하는 것에 대한 한 가지 사항은 존재하지 않는 필드에 액세스하려고하면 불쾌한 오류와 통지 및 잘못된 동작 대신 예외가 발생한다는 것입니다.
이것을 피하기 위해 다음과 같이 시도 / 잡을 수 있습니다.
try {
$field_val = $node_wrapper->field_doesnt_exist->value();
} catch (EntityMetadataWrapperException $e) {
$field_val = 'default/fallback value';
}
또는 내부적으로 isset()
어떤 EntityMetadataWrapper
핸들을 사용할 수 있습니까?
$field_val = 'default/fallback value';
if (isset($node_wrapper->field_doesnt_exist)) {
$field_val = $node_wrapper->field_doesnt_exist->value();
}
entity_metadata_wrapper()
은 더 이상 사용되지 않습니까? 필자는 모듈에서 이것을 호출하려고 시도Fatal error: Call to undefined function entity_metadata_wrapper()
했으며 Dreamweaver의 Drupal 7.12 설치에서 소스 검색을 수행했으며 코드의 다른 곳에서 0 개의 결과를 얻었습니다!