限制多个字段的用户角色

时间:2014-01-24 18:34:26

标签: php drupal drupal-7

我知道我可以创建两种不同的字段类型并为它们分配不同的角色。 由于使用了视图,自定义搜索和gmaps,并且因为这将应用于Field集合,我真的需要这种方法解决问题。

我尝试创建自定义模块,限制角色人员只能将两个field_text插入节点,但管理员可以插入尽可能多的数量。 field_text值的数量设置为无限制,内容类型名称为youtube。 我发现这是drupal 6,但我不知道如何在drupal 7中编码。

function myformlimit_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'youtube') {
global $user;
// Only allow to insert 2 text for role = staff
if (in_array('staff', $user->roles)) {
  $text_limit = 2;
  $form['#field_info']['field_text']['multiple'] = $text_limit;
  $i = 1;
  foreach ($form['field_text'] as $key => $value) {
    if (is_numeric($key)) {
      if ($i > $text_limit) {
        unset($form['field_text'][$key]);
      }
      $i++;
    }
  }
}
}
 }

1 个答案:

答案 0 :(得分:1)

嗯,你在那里的一半。您可以使用以下代码来获取您的想法。

请注意,我将我的字段命名为field_test_field,您可以将其替换为您的字段名称。

function myformlimit_form_alter(&$form, &$form_state, $form_id)
{
    if($form_id == 'youtube_node_form')
    {
        global $user;
        if(in_array('staff', $user->roles))
        {
            if($form_state['field']['field_test_field'][LANGUAGE_NONE]['items_count'] >= 2)
            {
                unset($form['field_test_field'][LANGUAGE_NONE]['add_more']);
            }
        }
    }
}