我如何根据用户角色隐藏列表条目 Drupal 7

How can i hide list entries based on user roles Drupal 7

我是 Drupal 的新手,我设置了节点页面并为各种角色分配了编辑权限。在编辑选项中,我有一个 select 列表字段,其中包含下拉选项 红色 绿色 蓝色 黄色

我正在查看的是限制每个角色查看下拉列表中的项目。

示例: 学生角色将看到 红蓝

教师角色会看到 红绿

管理员角色将会看到 红绿蓝黄

我搜索了一下,实体引用似乎是可行的方法,但我无法正确设置它。 A. 非常感谢详细的步骤帮助

更新:代码需要帮助

完成!

以下对我有用...

我的表单名称是 cal_form,字段名称是 field_color

function mymodule_form_alter(&$form, $form_state, $form_id)  {

switch ($form_id)  {
    case 'cal_form': 
    global $user;
//check role
    if (in_array('student', $user->roles)) {

//student role will not see the following entries       
unset($form['field_color'][LANGUAGE_NONE]['#options']['green']);
unset($form['field_color'][LANGUAGE_NONE]['#options']['yellow']);
   }
    break; 
  } 
}

将上面的 php 代码添加为 mymodule.module 并激活它。

您可以创建自定义模块。在这个模块中,您应该实现 hook_form_alter() 以在显示之前拦截表单,列出当前用户的角色(在 $user -> roles 中),然后过滤所有您不想显示的选项。

如果它是一个简单的选项列表字段,那么您最简单的选择可能是使用 hook_form_alter or hook_form_FORM_ID_alter 自己更改编辑表单(hook_from_FORM_ID_alter 更好,因为它只会 运行 特定形式)。
如果您改为使用分类参考字段,则可以使用 taxonomy access or taxonomy access lite.