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

时间:2015-05-05 17:52:57

标签: drupal drupal-7

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

我所关注的是限制每个角色查看下拉列表中的项目。

实施例: 学生角色会看到 红蓝色

教师角色会看到 红绿色

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

我搜索并且看起来像实体参考是放弃的方式,但我无法正确设置它。 A.细节一步一步的帮助将非常感激

更新:代码需要帮助

DONE!

以下为我工作......

我的表单名称是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并激活它。

2 个答案:

答案 0 :(得分:2)

如果它是一个简单的选项列表字段,那么您最简单的选项可能是使用hook_form_alterhook_form_FORM_ID_alter自己改变编辑表单(hook_from_FORM_ID_alter更好,因为它只会针对该特定表单运行)。<登记/> 如果您使用分类参考字段,则可以使用taxonomy accesstaxonomy access lite

答案 1 :(得分:0)

您可以创建自定义模块。在此模块中,您应该在显示之前实现hook_form_alter()拦截表单,列出当前用户的角色(在$ user - &gt;角色中),然后筛选您不希望显示的所有选项。< / p>