fer*_*ale 5 php drupal drupal-7
我最近一直在尝试更新我的代码以使用实体包装器来访问字段值.现在我有这个:
$wrapper = entity_metadata_wrapper("node", $nid);
print($wrapper->field_property_sample()->value());
Run Code Online (Sandbox Code Playgroud)
而不是这个:
print($node->field_property_sample[LANGUAGE_NONE][0]["value"]);
Run Code Online (Sandbox Code Playgroud)
问题是我有时遇到这个问题:
EntityMetadataWrapperException:未知数据属性field_property_sample.
我有办法解决这个问题吗?
我有大约10个这样的字段可以抛出这个异常,它真的变得很难看
$wrapper = entity_metadata_wrapper("node", $nid);
try {
print($wrapper->field_property_sample()->value());
} catch (EntityMetadataWrapperException &e){
print("");
}
/** repeat 10 times **/
Run Code Online (Sandbox Code Playgroud)
是否有一些我可以或多或少地这样称呼的功能?
$wrapper = entity_metadata_wrapper("node", $nid);
print($wrapper->field_property_sample->exists() ? $wrapper->field_property_sample->value() : "" );
/** repeat 10 times **/
Run Code Online (Sandbox Code Playgroud)
是的,您可以使用PHP语言的现有功能
try {
print($wrapper->field_property_sample->value());
}
catch (EntityMetadataWrapperException $e) {
// Recover
}
Run Code Online (Sandbox Code Playgroud)
或者,因为EntityMetadataWrapper
实现,__isset()
您可以使用:
print isset($wrapper->field_property_sample) ? $wrapper->field_property_sample->value() : '';
Run Code Online (Sandbox Code Playgroud)
参考Clive的答案,您可以这样使用__isset()
:
print ($wrapper->__isset('field_property_sample') ? $wrapper->field_property_sample->value() : '';
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3959 次 |
最近记录: |