Jak wyłączyć opcję w polu wyboru formularza?
$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.'),
);
Jak mogę wyłączyć na przykład opcję „Tylko tytuł”?
Odpowiedzi:
Jedynym sposobem wyłączenia jednej z opcji dla pola formularza „wybierz” jest zastąpienie funkcji theme_select () implementującej hook_theme_registry_alter () .
theme_select()
wykonuje następujący kod:Wdrożona funkcja powinna wywoływać własną funkcję zamiast form_select_options () .
Jak
theme_select()
to się nazywa w przypadku każdego pola wyboru używanego w dowolnej formie Drupala, wolałbym raczej rozważyć zastosowanie hook_form_alter () w celu usunięcia opcji z żądanego pola formularza.źródło
Wyłączenie opcji może być trudne do osiągnięcia ( użycie form_alter do wyłączenia JEDNEJ opcji pola wyboru ), więc zalecam, abyś spojrzał na optgroups jako alternatywę. Dokumentacja API formularza Drupal nie wyjaśnia tego, ale API pozwala na zagnieżdżoną tablicę dla opcji, spójrz na form_select_options () i
<optgroup>
część.Możesz napisać ten kod:
Zobacz formularze Drupal 6 i tablice optgroup .
Edycja : wyjaśnienie tego jest alternatywą, a nie bezpośrednią odpowiedzią.
źródło
Nie wiem i nie byłem w stanie znaleźć żadnego sposobu na wyłączenie pojedynczej opcji. Wygląda na to, że próbują dostać coś takiego do Drupala. Może jakieś alternatywy, czy możesz zrobić to z css ?:
Lub, jeśli nie chcesz, aby wartości były w ogóle wyświetlane, możesz je cofnąć
źródło
Mam swoją pracującą z następującą linią
gdzie 1 to indeks elementu, którego nie chcesz wyświetlać.
źródło
Przekształć jeden element, który chcesz wyłączyć, w pusty
<optgroup>
.Plusy:
hook_form_alter
bezpośrednio lub podczas tworzenia niestandardowego formularza, nie ma potrzeby implementowaniatheme_select
funkcji w kompozycji.Cons:
value='title'
atrybutu związanego z oryginałem<option>
w wynikowym DOM.Realizacja:
Optgroups w Drupal są oznaczone wewnątrz
#options
tablicy, jak każdakey => value
para, w której sama wartość jest tablicą.Tak więc z przykładu w PO zmienilibyśmy wartość by stać się, a następnie zmieniliśmy wartość na pustą tablicę.
t('Titles only')
key
Powstały HTML będzie wyglądał mniej więcej tak:
źródło
Aby wyłączyć całe pole, użyj
Aby wyłączyć opcję w polu wyboru, użyj
gdzie:
[„nazwa_pola”] to nazwa twojego pola
[1] to indeks opcji na liście
źródło