Como altero a classe do botão de envio?

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

Quero alterar a classe de "envio de formulário" para "envio de formulário".

Como posso fazer isso? De onde vem a classe "envio de formulário"?

Aproveite a vida
fonte

Respostas:

22

Se eu fosse você, não mudaria o nome da classe, mas acrescentaria sua própria classe ao elemento do formulário. Você pode fazer isso implementando hook_form_alter em um módulo personalizado ou (no caso do Drupal 7) em seu tema. O código ficaria assim:

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

A propósito, o elemento do botão enviar não é necessariamente $form['actions']['submit']. Você precisará descobrir qual elemento é o botão enviar em sua situação específica. Você pode fazer isso exibindo a variável $ form; Eu recomendo instalar o módulo Devel e adicionar dsm($form);à função acima.

Marcvangend
fonte
como você sabe isso pode dar uma aula para o botão enviar $ form [ 'ações'] [ 'submeter'] [ 'atributos #'] [ 'classe'] [].
enjoylife
2
Está na referência da API de formulários, api.drupal.org/api/drupal/… .
Marcvangend 23/05
a API mostra como este $ form ['# attribute'] = array ('class' => array ('search-form')); por que você escreve dessa forma. $ form ['actions'] ['submit'] ['# attribute'] ['class'] []. e tem um []? obrigado
enjoylife 23/05
7
Se você o fizer $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, substituirá todas as classes que já estão definidas. Se você o fizer $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, substituirá não apenas as classes existentes, mas todos os atributos. (PS Veja também a minha além da resposta acima.)
marcvangend
Isso funciona no Drupal 8 também.
Achraf JEDAY 24/03
0

esse código basicamente usuário ou adicione sua classe personalizada no botão de envio de formulário.

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
fonte
2
isso não está correto, o item "class" na matriz #attributes precisa ser uma matriz:'class' => array("mybtn-class", "mybtn-class2")
DrCord
Embora a resposta do @devendra funcione, seguindo a sugestão do @DrCord, ele deve ser'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo 25/11