Как отключить опцию в поле выбора формы?
$form['feed'] = array(
'#type' => 'select',
'#title' => t('Display of XML feed items'),
'#options' => array(
'title' => t('Titles only'),
'teaser' => t('Titles plus teaser'),
'fulltext' => t('Full text'),
),
'#description' => t('Global setting for the length of XML feed items that are output by default.'),
);
Как отключить, например, опцию «Только заголовок»?
Ответы:
Единственный способ отключить одну из опций для поля формы «выбрать» - это переопределить функцию theme_select (), реализующую hook_theme_registry_alter () .
theme_select()
выполняет следующий код:Реализуемая вами функция должна вызывать вашу собственную функцию вместо form_select_options () .
Поскольку он
theme_select()
вызывается для каждого поля выбора, используемого в любой форме Drupal, я предпочел бы реализовать реализацию hook_form_alter () для удаления опции из поля формы, которое вы хотите.источник
Отключить опцию может быть сложно ( используя form_alter, чтобы отключить ОДНУ опцию поля выбора ), поэтому я рекомендую вам взглянуть на optgroups в качестве альтернативы. Документация по API формы Drupal не объясняет этого, но API позволяет использовать вложенный массив для опций, взгляните на form_select_options () и
<optgroup>
часть.Вы можете написать этот код:
Посмотрите на формы Drupal 6 и массивы optgroup .
Изменить : уточнить это альтернативный, а не прямой ответ.
источник
Я не знаю и не смог найти способ отключить отдельную опцию. Похоже, они пытаются получить что-то подобное в Drupal. Может быть, какие-то альтернативы, может ли то, что вы хотите сделать с помощью CSS?
Или, если вы не хотите, чтобы значения отображались вообще, вы можете отменить их
источник
Я получил мою работу со следующей строкой
где 1 - индекс элемента, который вы не хотите отображать.
источник
Преобразуйте один элемент, который вы хотите отключить, в пустой
<optgroup>
.Плюсы:
hook_form_alter
или непосредственно при создании пользовательской формы, нет необходимости реализовыватьtheme_select
функцию в вашей теме.Минусы:
value='title'
атрибут, связанный с оригиналом,<option>
в получающемся DOM.Реализация:
Optgroups в Drupal обозначаются внутри
#options
массива как любыеkey => value
пары, где само значение является массивом.Таким образом, из примера в OP мы бы переместили значение,
t('Titles only')
чтобы стать,key
и затем сделали бы значение пустым массивом.Получившийся HTML будет выглядеть примерно так:
источник
Для отключения всего поля используйте
Чтобы отключить параметр в поле выбора, используйте
где:
['field_name'] - это имя вашего поля
[1] - индекс опции в списке
источник