Я пытаюсь отключить пару полей и сделать их доступными только для чтения через 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?
Спасибо