Jak mogę dodać klasy do znacznika opcji formularza bez JS? W tej chwili w Form API mogę przekazać tablicę kluczy w ten sposób
array(
'0' => 'option 0',
'1' => 'option 1',
)
i dostanę HTML tak
<option value="0">option 0</option>
<option value="1">option 1</option>
Czy istnieje sposób na zrobienie czegoś takiego:
array(
array(
'value' => 0,
'text' => 'option 0',
'class' => 'bob 0',
),
array(
'value' => 1,
'text' => 'option 1',
'class' => 'bob 1',
),
)
a potem weź to
<option value="0" class="bob 0">option 0</option>
<option value="1" class="bob 1">option 1</option>
Odpowiedzi:
Niestety nie jest to obecnie bardzo łatwe przy użyciu Form API.
Jest otwarty problem, aby dodać tę funkcję (sięga aż do 2008 roku), która teoretycznie pozwoliłaby ci zrobić coś takiego:
Ale niestety w tej chwili nie ma nic prócz nieudanych łatek.
Jedynym sposobem, w jaki mogę teraz to zrobić, jest dodanie
#process
funkcji do wybranego elementu i dodanie klas do każdej opcji, gdy zostaną one podzielone indywidualnie.źródło
Nie byłem więc w stanie wykonać w pełni elastycznej opcji, ale oto sposób na dodanie klas do
options
tagu na podstawie wartości opcji. Działa, ale zastępujetheme_select
funkcję, aby użyć mojej własnej wersjiform_select_options
źródło
Istnieje sposób na zastąpienie poszczególnych
option
elementów. Nie jestem jednak pewien, czy to działa w Drupal 7.Oto kod, który działa w Drupal 8. Może warto spróbować.
Mam nadzieję, że to pomoże. Twoje zdrowie! Alternatywnie, wybierz jedno z pozostałych rozwiązań.
źródło