Por padrão, a marcação HTML para botões de opção é semelhante a (Drupal 7):
<div class="form-item form-type-radio form-item-SOME_ID">
<input id="edit-SOME_ID" class="form-radio" type="radio" value="SOME_VALUE" name="SOME_NAME" />
<label class="option" for="edit-bla-bla">MY LABEL</label>
</div>
Eu preciso alterar / adicionar algumas classes css no exterior <div>
ou adicionar um wrapper <div>
. Como faço isso?
Respostas:
Se você mesmo estiver definindo o formulário, poderá agrupar um elemento com HTML usando as propriedades
#prefix
e#suffix
:Se você deseja adicionar uma classe ao wrapper existente, pode fazê-lo usando a
#attributes
propriedade:Se você não estiver definindo o formulário, ainda poderá usar a mesma lógica e implementar a
hook_form_alter()
para alterar o formulário existente:Observe que, ao usar o
hook_form_alter()
método, você deve anexar à matriz de classes existente para não substituir nenhuma classe que foi definida anteriormente.fonte
Você pode fazer o acima (prefixo / sufixo) nos itens da matriz de opções e obter o que quiser em torno de cada item.
fonte
Consegui isso depois de muito trabalho e tentando todos os métodos publicados usando uma dica inteligente que encontrei no fundo da internet em outro site: http://e9p.net/altering-individual-radio-or-checkbox-items-drupal- 7-fapi , para
#after_build
poder alterar os rádios individuais do elemento de formulário, uma vez que eles são uma matriz de renderização drupal.Eu queria que cada rádio fosse embrulhado em um contêiner com uma classe, então usei
#prefix
e#suffix
fiz isso:exemplo de uso:
No entanto, se você deseja que apenas o
input
elemento tenha a classe, precisará implementar a solução que eu publiquei no drupal.org em https://api.drupal.org/comment/60197#comment-60197 para permitir que os #options_attributes sejam usados corretamente para opções individuais. Postando novamente o código aqui:exemplo de uso:
fonte
A única maneira de conseguir isso é criando um elemento de formulário diferente para cada rádio, associando manualmente os nomes usando #name e definindo manualmente um valor usando #attributes. (#value não funciona por algum motivo.)
Por exemplo:
Isso adicionará um invólucro e uma classe aos botões de opção individuais, em vez do grupo de opções, como a resposta atualmente aceita.
fonte