Comment thématiser des boutons d'API de formulaire dans Drupal?
-
06-07-2019 - |
Question
La sortie par défaut de l'API formulaire Drupal est:
<input id="edit-submit" class="form-submit" type="submit" value="Save" name="op"/>
Comment thématiser cela pour que je reçoive:
<button id="edit-submit" class="form-submit" type="submit">
<span>Save</span>
</button>
J'ai besoin de la balise span interne pour pouvoir utiliser la technique CSS des portes coulissantes.
Je suppose que je dois substituer theme_button ($ element) à partir de form.inc, mais mes tentatives jusqu'à présent ont été infructueuses.
La solution
L’idée de base pour thématiser un form_foo si vous utilisez un thème PHP simple (comme Chameleon) est d’écrire une fonction appelée theme_form_foo ().
Vous pouvez également thème un élément (comme ce bouton) spécifiquement, en déclarant une fonction de thème juste pour elle. Voir https://api.drupal.org/api/drupal /developer%21topics%21forms_api_reference.html/7
Notez que, avec D6, dans les deux cas, vous devrez déclarer la fonction dans le registre de thèmes, sinon Drupal ne remarquera pas ce remplacement. Ce n'est pas nécessaire dans D5. Si vous utilisez phptemplate, vous en aurez également besoin, bien que PHPtemplate s’occupe du registre en dehors du cas des formulaires: http://drupal.org/node/132442#theme-registry
La documentation à ce sujet est disponible sur a.d.o. : http://api.drupal.org/api/file/developer/topics/forms_api.html
Autres conseils
J'ai maintenant une fonction dans le sens de
function mytheme_button($element) {
return "<button><span></span></button>"; # lots of code missing here for clarity
}
Pour que cela fonctionne, j'ai simplement vidé le cache et Drupal a remarqué et utilisé automatiquement.