Come posso modificare la classe del pulsante di invio?


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

Voglio cambiare la classe da "form-submit" a "form-submitone".

Come posso farlo? Da dove viene la classe "form-submit"?

Risposte:


22

Se fossi in te, non cambierei il nome della classe, ma piuttosto aggiungerei la tua classe all'elemento form. Puoi farlo implementando hook_form_alter in un modulo personalizzato o (nel caso di Drupal 7) nel tuo tema. Il codice sarebbe simile al seguente:

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

A proposito, l'elemento del pulsante di invio non è necessariamente $form['actions']['submit']. Dovrai capire quale elemento è il pulsante di invio nella tua situazione specifica. Puoi farlo emettendo la variabile $ form; Consiglio di installare il modulo Devel e di aggiungerlo dsm($form);alla funzione sopra.


come fai a sapere che questo può dare una lezione al pulsante di invio. $ form ['actions'] ['submit'] ['# attributi'] ['class'] []
enjoylife

2
È nel riferimento API Forms, api.drupal.org/api/drupal/… .
marcvangend,

l'api mostra come $ form ['# attributi'] = array ('class' => array ('search-form')); perché scrivi così. $ form ['actions'] ['submit'] ['# attributi'] ['class'] []. e hai un []? grazie
enjoylife

7
Se lo facessi $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, sovrascriveresti tutte le classi che sono già impostate. Se lo facessi $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, sovrascriveresti non solo le classi esistenti, ma tutti gli attributi. (PS Vedi anche la mia aggiunta alla risposta sopra.)
marcvangend,

Funziona anche con Drupal 8.
Achraf JEDAY

0

questo codice fondamentalmente l'utente dor aggiunge la tua classe personalizzata sul pulsante di invio modulo.

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
questo non è corretto, l'elemento "class" nell'array #attributes deve essere un array:'class' => array("mybtn-class", "mybtn-class2")
DrCord,

Sebbene la risposta di @devendra funzioni, seguendo il suggerimento di @DrCord, dovrebbe essere'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.