Php 如何在drupal中连接变量
我想知道如何连接[und][0][value]。 我不想每次都写[und][0][value]。因此,我必须这样做:Php 如何在drupal中连接变量,php,drupal,drupal-modules,custom-post-type,Php,Drupal,Drupal Modules,Custom Post Type,我想知道如何连接[und][0][value]。 我不想每次都写[und][0][value]。因此,我必须这样做: <?php $und_value = $load->field_testimonial_location['und'][0]['value']; $query = db_select('node','n'); $query->fields('n',array('nid')); $query->condition('n.ty
<?php
$und_value = $load->field_testimonial_location['und'][0]['value'];
$query = db_select('node','n');
$query->fields('n',array('nid'));
$query->condition('n.type','testimonial','=');
$result = $testimonial_query->execute();
while($fetch = $result->fetchObject()){
$load = node_load($fetch->nid);
// $location = $load->field_testimonial_location['und'][0]['value'];
$location = $load->field_testimonial_location.$und_value;
echo $location;
}
为什么不做一些函数,将节点字段作为参数并返回其值
function field_value($field){
return $field['und'][0]['value'];
}
类似的东西(未测试)
但如果您不想使用函数,请尝试使用大括号,如:
$location = $load->{field_testimonial_location.$und_value};
这应该行…为什么不做一些函数,将节点字段作为参数并返回其值
function field_value($field){
return $field['und'][0]['value'];
}
类似的东西(未测试)
但如果您不想使用函数,请尝试使用大括号,如:
$location = $load->{field_testimonial_location.$und_value};
这应该有用…扩展MilanG发布的答案,使函数更通用
函数字段\值($field,$index=0){
返回$field['und'][$index]['value'];
}
有时,您有多个值字段,在这种情况下,您还必须传递值的索引。比如说
$field['und'][3]['value']代码>扩展米朗发布的答案,使函数更通用
函数字段\值($field,$index=0){
返回$field['und'][$index]['value'];
}
有时,您有多个值字段,在这种情况下,您还必须传递值的索引。比如说
$field['und'][3]['value']代码>请不要使用此类缩写,它们不会适合所有情况,最终会破坏您的代码
相反,已经有一个工具可以使用更简单的语法创建自定义代码:
基本上,而不是
$node = node_load($nid);
$field_value = $node->field_name['und'][0]['value'];
然后你可以做类似的事情
$node = node_load($nid);
$node_wrapper = entity_metadata_wrapper('node', $node);
$field_value = $node_wrapper->field_name->value();
使用节点包装器,您还可以设置节点的值,这更简单,甚至可以在多语言环境中工作,无需先获取语言($node->language
)或使用常量(language\u NONE
)
在我的自定义模块中,我经常对节点对象使用$node
,对包装器对象使用$enode
。它同样简短,并且仍然知道我在处理哪个对象。请不要使用此类缩写,它们不适合所有情况,最终会破坏您的代码
相反,已经有一个工具可以使用更简单的语法创建自定义代码:
基本上,而不是
$node = node_load($nid);
$field_value = $node->field_name['und'][0]['value'];
然后你可以做类似的事情
$node = node_load($nid);
$node_wrapper = entity_metadata_wrapper('node', $node);
$field_value = $node_wrapper->field_name->value();
使用节点包装器,您还可以设置节点的值,这更简单,甚至可以在多语言环境中工作,无需先获取语言($node->language
)或使用常量(language\u NONE
)
在我的自定义模块中,我经常对节点对象使用$node
,对包装器对象使用$enode
。它同样短,并且仍然知道我在处理哪个对象。请注意,对于某些字段类型,最后一个arey级别的键并不总是“值”。有时是“nid”或“tid”(用于nod/分类术语引用),有时是“uri”…用于图像等…请注意,对于某些字段类型,最后一个arey级别的键并不总是“值”。有时是“nid”或“tid”(用于nod/分类术语引用),有时是“uri”…用于图像等。。。