Как отключить поле или сделать его доступным только для чтения в Drupal 7 - PullRequest
6 голосов
/ 23 марта 2011

Я пытаюсь отключить пару полей и сделать их доступными только для чтения через hook_page_alter (). Мне удалось проверить, просматривает ли пользователь раздел редактирования страницы (редактирование формы)

$page['content']['system_main']['#node_edit_form'] == TRUE)

тогда, когда я попытался отключить пару полей, я обнаружил, что список выбора может быть отключен этим кодом:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#attributes']['disabled'] = TRUE;

но если я использую следующий код, он не будет работать:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE;

Я также обнаружил, что не могу использовать тот же код для отключения поля текстовой области:

$page['content']['system_main']['field_my_text_area']['und']['#attributes']['disabled'] = TRUE;

Приведенный выше код не отключает текстовую область, но тот же код может отключить список выбора!

Затем я попробовал hook_form_alter () сделать то же самое, и я смог отключить поля, и когда я проверил рендеринг массива из массива $ page, я увидел, что он показывает:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE;

но когда я установил тот же код в hook_page_alter (), он не сработал. Похоже, что-то еще переопределит это, я думал, что hook_page_alter () - последнее место для изменения разметки.

Есть идеи, как лучше всего отключить / только для чтения любые поля, внутри hook_page_alter () в drupal 7?

Спасибо

Ответы [ 2 ]

18 голосов
/ 24 марта 2011

Работает для текстовых полей ^

$form['field_secured_title']['und']['0']['value']['#attributes']['disabled'] = TRUE;
2 голосов
/ 27 июля 2014

Как сказано в Документах

Вы можете использовать атрибуты:

$form['#attributes'] = array('disabled' => TRUE);
...