Par défaut, le balisage HTML des boutons radio ressemble à (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>
J'ai besoin de changer / ajouter des classes CSS dans l'extérieur <div>
OU ajouter un wrapper <div>
. Comment je fais ça?
Réponses:
Si vous définissez vous-même le formulaire, vous pouvez envelopper un élément avec du HTML à l'aide des propriétés
#prefix
et#suffix
:Si vous souhaitez ajouter une classe à l'encapsuleur existant, vous pouvez le faire en utilisant la
#attributes
propriété:Si vous ne définissez pas le formulaire vous-même, vous pouvez toujours utiliser la même logique et implémenter un
hook_form_alter()
pour modifier le formulaire existant:Notez que lorsque vous utilisez la
hook_form_alter()
méthode, vous devez ajouter au tableau de classes existant afin de ne pas remplacer les classes qui ont été définies précédemment.la source
Vous pouvez faire ce qui précède (préfixe / suffixe) sur les éléments du tableau d'options, puis vous obtenez tout ce que vous voulez autour de chaque élément.
la source
J'ai pu y parvenir après beaucoup de travail et en essayant chaque méthode publiée en utilisant une astuce intelligente que j'ai trouvée profondément sur Internet sur un autre site: http://e9p.net/altering-individual-radio-or-checkbox-items-drupal- 7 fapi , à utiliser
#after_build
pour pouvoir modifier les radios individuelles de l'élément de forme une fois qu'elles sont un tableau de rendu drupal.Je voulais que chaque radio soit emballée dans un conteneur avec une classe, alors j'ai utilisé
#prefix
et#suffix
pour cela:exemple d'utilisation:
Cependant, si vous souhaitez uniquement que l'
input
élément ait la classe, vous devez implémenter la solution que j'ai publiée sur drupal.org à https://api.drupal.org/comment/60197#comment-60197 pour autoriser l'utilisation des #options_attributes correctement pour les options individuelles. Code de re-publication ici:exemple d'utilisation:
la source
La seule façon dont j'ai pu y parvenir est de créer un élément de formulaire différent pour chaque radio, d'appairer manuellement les noms à l'aide de #name et de définir manuellement une valeur à l'aide de #attributes. (#value ne fonctionne pas pour une raison quelconque.)
Par exemple:
Cela ajoutera un wrapper et une classe aux boutons radio individuels plutôt qu'au groupe radio comme le fait la réponse actuellement acceptée.
la source