【问题标题】:How can i hide list entries based on user roles Drupal 7如何根据用户角色隐藏列表条目 Drupal 7
【发布时间】:2015-05-05 17:52:57
【问题描述】:

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

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

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

教师角色将看到 红绿

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

我搜索过,似乎实体引用是要走的路,但我无法正确设置它。 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并激活它。

【问题讨论】:

  • 下拉列表放在哪里?以什么形式?
  • 它是一个节点,在编辑选项中我有一个选择列表字段
  • 在 $form 数组中找到您的字段和选项数组,并根据用户角色删除不需要的值。但要小心——这对于创建新节点是可以的,但要考虑编辑。如果已经选择了当前用户不允许的选项怎么办? (或者你用权限解决了这个问题)......

标签: drupal drupal-7


【解决方案1】:

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

【讨论】:

  • 我的表单名称是 event-node-form,字段名称是 field_display[und] 需要代码帮助 `function MYMODULE_form_alter(&$form, &$form_state, $form_id) { if ($form_id == 'event-node-form') { if (!user_access('administer nodes')) { //这里要添加什么 } } } `
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-17
    • 2011-07-06
    • 2014-06-12
    • 2018-07-19
    • 2012-09-16
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多