我有两个类 - 一个是User对象,另一个是Drupal View,显示链接(只是另一个对象,用于此问题)。 Drupal View显示的内容具有“field_carries_trucks”,“field_carries_cars”等属性。这些是布尔属性(无论它们是true还是false都由复选框指定),但它在Drupal中的结果是它们成为数组值。
举个例子,如果我想检查一个特定链接的属性的值(是否检查了“携带汽车”的特定内容)我在
上执行var_dump$view->_field_data[nid][entity]->field_carries_cars[und][0][value]
因此,此示例中的field_carries_cars是一个数组。在上面执行var转储会产生0或1。
对于User类,User类具有类似('sees_cars')的布尔属性。基本上,它是用户是否可以看到某个链接的布尔值。
现在,我的目标是以优雅的方式过滤用户是否可以看到链接。所以这就是我所做的:
$permissions = array(
'field_carries_trucks' => 'user_sees_trucks',
'field_carries_cars' => 'user_sees_cars',
'field_carries_vans' => 'user_sees_vans',
);
然后我的目标是做一个简单的检查
foreach($permissions as $field => $user_perm) {
if($view->result[]->_field_data[nid][entity]->$field[und][0][value] == $user->$user_perm) {
echo 'Can view';
}
}
基本上,如果链接的字段属性(即汽车链接)和用户的属性(即可以查看汽车链接),则应显示该链接。
这是我的问题。如果我这样做:
foreach($permissions as $field => $user_perm) {
var_dump($view->result[]->_field_data[nid][entity]->$field)
}
只是为了排除故障,没有任何事情发生。
我的目标是避免对所有这些权限检查进行硬编码。我究竟做错了什么?或者,我该怎么做才能让这件事变得优雅?
答案 0 :(得分:1)
您缺少数组索引0
foreach($permissions as $field => $user_perm) {
var_dump($view->result[**0**]->_field_data[nid][entity]->$field)
}
好吗?