Como posso adicionar classes a uma tag de opção de formulário sem JS? No momento, na API do formulário, posso passar uma matriz com chave como esta
array(
'0' => 'option 0',
'1' => 'option 1',
)
e eu vou pegar html assim
<option value="0">option 0</option>
<option value="1">option 1</option>
Existe uma maneira de fazer algo assim:
array(
array(
'value' => 0,
'text' => 'option 0',
'class' => 'bob 0',
),
array(
'value' => 1,
'text' => 'option 1',
'class' => 'bob 1',
),
)
e depois pegue isso
<option value="0" class="bob 0">option 0</option>
<option value="1" class="bob 1">option 1</option>
Respostas:
Infelizmente, isso não é muito fácil usando a API do formulário atualmente.
Existe um problema em aberto para adicionar essa funcionalidade (remonta a 2008) que teoricamente permitiria que você fizesse algo assim:
Infelizmente, porém, não há nada além de patches com falha anexados ao problema no momento.
A única maneira de pensar em fazê-lo no momento seria adicionar uma
#process
função ao elemento select e adicionar as classes a cada opção quando elas forem divididas individualmente.fonte
Portanto, não consegui concluir a opção totalmente flexível, mas aqui está uma maneira de adicionar classes à
options
tag com base no valor da opção. Funciona, mas substitui atheme_select
função para usar minha própria versão doform_select_options
fonte
Na verdade, existe uma maneira de substituir
option
itens individuais . No entanto, não tenho certeza se funciona no Drupal 7.Aqui está um código que funciona no Drupal 8. Vale a pena tentar.
Espero que ajude. Felicidades! Como alternativa, escolha uma das outras soluções.
fonte