¿Cómo modifico la clase del botón de envío?

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

Quiero alterar la clase de "formulario-enviar" a "formulario-enviar".

¿Cómo puedo hacerlo? ¿De dónde viene la clase "envío de formulario"?

disfruta la vida
fuente

Respuestas:

22

Si yo fuera usted, no cambiaría el nombre de la clase, sino que agregaría su propia clase al elemento de formulario. Puede hacerlo implementando hook_form_alter en un módulo personalizado o (en el caso de Drupal 7) en su tema. El código se vería así:

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

Por cierto, el elemento del botón enviar no es necesariamente $form['actions']['submit']. Tendrá que averiguar qué elemento es el botón de envío en su situación específica. Puede hacerlo generando la variable $ form; Recomiendo instalar el módulo Devel y agregar dsm($form);a la función anterior.

marcvangend
fuente
¿cómo sabes que esto puede dar una clase al botón de envío? $ form ['actions'] ['submit'] ['# atributos'] ['class'] []
enjoylife
2
Está en la referencia de la API de formularios, api.drupal.org/api/drupal/… .
marcvangend
la API se muestra como este $ form ['# atributos'] = array ('clase' => array ('search-form')); por qué escribe así. $ form ['actions'] ['submit'] ['# atributos'] ['class'] []. y tener un []? gracias
enjoylife
77
Si lo hiciera $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, estaría anulando todas las clases que ya están establecidas. Si lo hiciera $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, sobrescribiría no solo las clases existentes, sino todos los atributos. (PD Vea también mi adición a la respuesta anterior.)
marcvangend
Esto también funciona en Drupal 8.
Achraf JEDAY
0

Básicamente, este código de usuario no agrega su clase personalizada en el botón de envío de formulario.

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
  );

}
devendra
fuente
2
esto no es correcto, el elemento "clase" en la matriz #attributes debe ser una matriz:'class' => array("mybtn-class", "mybtn-class2")
DrCord
Aunque la respuesta @devendra funciona, siguiendo la sugerencia de @DrCord, debería ser'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo