好的,两小时后现在挣扎了 - 我仍然无法得到它。
我正在尝试使用计算字段对一个节点的所有五星评级进行平均。但我正在努力简单地使用实体访问其他领域!
在节点的主体中,这很好用:
$test1 = $node->field_ae_stimclasswrk[und][0]['average'];
但在计算字段区域中,这不起作用:
$entity_field[0]['value'] = $entity->field_ae_stimclasswrk[$entity->language] [und][0]['average'];
相反,当我保存节点时,我得到了这个索引错误:
注意:未定义的索引:在eval()中的und(...的第2行
它必须是语法,但我完全没有想法。
这是字段信息:
[field_ae_stimclasswrk] => Array
(
[und] => Array
(
[0] => Array
(
[user] => 80
[average] => 80
[count] => 1
)
)
)
答案 0 :(得分:2)
代码中的一个小错误:
$entity->field_ae_stimclasswrk[$entity->language][und][0]['average'];
如果仔细观察,您实际上是尝试访问该字段的语言元素两次,一次使用$entity->language
,一次使用und
。
最好保持代码上下文,以便删除代码中的[und]
项:
$entity->field_ae_stimclasswrk[$entity->language][0]['average'];
答案 1 :(得分:1)
我遇到了同样的问题。它实际上是由$entity->field_ref[$entity->language]
内不存在的索引引起的。
对我来说,$entity->field_ref[$entity->language]
存在于所有节点,但当你在其中添加一个索引时,它会导致任何不使用该字段的节点出现问题。
$entity->field_ref[$entity->language][0]
导致了这个问题(请注意添加[0]
索引)。
要解决您的问题,您可以尝试:
$test1 = (isset($node->field_ae_stimclasswrk[$node->language][0]['average']))? $node->field_ae_stimclasswrk[$node->language][0]['average'] : NULL;
或者更容易阅读:
if (isset($node->field_ae_stimclasswrk[$node->language][0]['average'])){
$test1 = $node->field_ae_stimclasswrk[$node->language][0]['average'];
} else {
$test1 = NULL;
}
这样它就会绕过任何不使用该字段的节点。