我不是php的专家。在drupal视图中工作,我需要有条件地格式化几个字段。要获取已清理的节点值,我可以使用:
$thsField = field_get_items('node', $node, 'field_first');
$output = field_view_value('node', $node, 'field_first',$thsField[0]);
但是由于我必须多次这样做,所以我想使用一个可以将字段名称传递给的函数。像
这样的东西$node = node_load($data->nid);
function getValue($var)
{
$thsfield = field_get_items('node', $node, $var);
$fieldvalue = field_view_value('node', $node, $var,$thsfield[0]);
return $fieldvalue;
}
但我没有运气。有没有什么方法可以在这个用法中理解$ var的字符串值,或者我根据php做了一些根本错误的东西? (编辑:添加节点def - 我的测试中已经存在WAS。$ node和$ data值明确填充并且在范围内)
我认为可能有些东西我不了解php范围(或Drupal访问权限?)。如果我这样做:
function getValue()
{
$node = node_load($data->nid);
$thsfield = field_get_items('node', $node, 'field_first_author');
$thsvalue = field_view_value('node', $node, 'field_first_author',$thsfield[0]);
print render($thsvalue);
}
我收到此错误:" ResponseText:EntityMalformedException:在类型node的实体上缺少bundle属性。在entity_extract_ids()"
中如果我注释掉函数名称和括号,它会按预期打印该值。