Comment puis-je modifier la classe du bouton de soumission?


12
 <input type="submit" class="form-submit" value="" name="op" id="edit-submit">

Je veux modifier la classe de "formulaire-soumettre" à "formulaire-soumettre".

Comment est-ce que je peux le faire? D'où vient la classe "form-submit"?

Réponses:


22

Si j'étais vous, je ne changerais pas le nom de la classe mais ajouterais plutôt votre propre classe à l'élément de formulaire. Vous pouvez le faire en implémentant hook_form_alter dans un module personnalisé ou (dans le cas de Drupal 7) dans votre thème. Le code ressemblerait à ceci:

<?php
function mymodule_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id = 'my_form') {
    $form['actions']['submit']['#attributes']['class'][] = 'form-submitone';
  }
}
?>

Soit dit en passant, l'élément bouton d'envoi ne l'est pas nécessairement $form['actions']['submit']. Vous devrez déterminer quel élément est le bouton d'envoi dans votre situation spécifique. Vous pouvez le faire en sortant la variable $ form; Je recommande d'installer le module Devel et d'ajouter dsm($form);à la fonction ci-dessus.


comment savez-vous que cela peut donner une classe au bouton soumettre. $ form ['actions'] ['soumettre'] ['# attributs'] ['classe'] []
enjoylife

2
C'est dans la référence de l'API Forms, api.drupal.org/api/drupal/… .
marcvangend

l'api apparaît comme ceci $ form ['# attributes'] = array ('class' => array ('search-form')); pourquoi vous écrivez comme ceci. $ form ['actions'] ['submit'] ['# attributes'] ['class'] []. et avoir un []? merci
enjoylife

7
Si vous le faisiez $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, vous surchargeriez toutes les classes déjà définies. Si vous le faisiez $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, vous écraseriez non seulement les classes existantes, mais tous les attributs. (PS Voir aussi mon ajout à la réponse ci-dessus.)
marcvangend

Cela fonctionne également dans Drupal 8.
Achraf JEDAY

0

ce code consiste essentiellement pour l'utilisateur à ajouter votre classe personnalisée sur le bouton d'envoi du formulaire.

function subscriber_form(){
    $form['submit'] = array(
    '#type'  => 'submit',
    '#attributes'=>array('class'=> array('mybtn')),
    '#ajax' => array(
      'callback' => 'subscriber_ajax_callback',
    ),
    '#value' =>'Submit', // @FIXME doesn't render quotes properly
  );

}

2
ce n'est pas correct, l'élément "class" dans le tableau #attributes doit être un tableau:'class' => array("mybtn-class", "mybtn-class2")
DrCord

Bien que la réponse @devendra fonctionne, à la suite de la suggestion de @DrCord, elle devrait l'être'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.