Comment puis-je ajouter des classes à une balise d'option de formulaire sans JS? Pour le moment dans Form API, je peux passer un tableau à clés comme celui-ci
array(
'0' => 'option 0',
'1' => 'option 1',
)
et je vais avoir du HTML comme ça
<option value="0">option 0</option>
<option value="1">option 1</option>
Y a-t-il un moyen de faire quelque chose comme ça:
array(
array(
'value' => 0,
'text' => 'option 0',
'class' => 'bob 0',
),
array(
'value' => 1,
'text' => 'option 1',
'class' => 'bob 1',
),
)
puis obtenez ceci
<option value="0" class="bob 0">option 0</option>
<option value="1" class="bob 1">option 1</option>
Réponses:
Malheureusement, ce n'est pas très facile actuellement d'utiliser l'API Form.
Il y a un problème ouvert pour ajouter cette fonctionnalité (cela remonte à 2008) qui vous permettrait théoriquement de faire quelque chose comme ceci:
Mais malheureusement, il n'y a rien d'autre que des correctifs échoués attachés au problème pour le moment.
La seule façon dont je peux penser pour le moment serait d'ajouter une
#process
fonction à l'élément select et d'ajouter la ou les classes à chaque option lorsqu'elles sont ventilées individuellement.la source
Je n'ai donc pas pu obtenir l'option entièrement flexible, mais voici un moyen d'ajouter des classes à la
options
balise en fonction de la valeur de l'option. Cela fonctionne mais en remplaçant latheme_select
fonction pour utiliser ma propre version deform_select_options
la source
Il existe en fait un moyen de remplacer des
option
éléments individuels . Cependant, je ne sais pas si cela fonctionne dans Drupal 7.Voici du code qui fonctionne dans Drupal 8. Cela pourrait valoir la peine d'être essayé.
J'espère que ça aide. À votre santé! Sinon, optez pour l'une des autres solutions.
la source