Ограничение доступа к полям форм в Drupal

24 ноября 2014 - 23:15

Ограничить доступ определенным ролям пользователей (или анонимным посетителям) к полям сущностей (нод, терминов такосномии и др.) в Drupal позволяет модуль Field Permissions. Однако иногда требуется ограничить доступ к полю любой другой формы, в том числе создаваемой собственным модулем. Задача легко решается с использованием свойства элементов форм #access. Следующий пример ограничивает доступ к полю некой формы для всех пользователей, кроме администраторов:

/**
 * Implements hook_form_FORM_ID_alter().
 */

function MYMODULE_form_FORM_ID_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  if (!in_array('administrator', $user -> roles)) {
    $form['your_field_name']['#access'] = false;
  }
}