Как я могу изменить класс кнопки отправки?


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

Я хочу изменить класс с "form-submit" на "form-submitone".

Как я могу это сделать? Откуда взялся класс «форма-отправка»?

Ответы:


22

На вашем месте я бы не изменил имя класса, а добавил бы свой собственный класс к элементу формы. Вы можете сделать это, реализовав hook_form_alter в пользовательском модуле или (в случае Drupal 7) в своей теме. Код будет выглядеть примерно так:

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

Кстати, элемент кнопки отправки не обязательно $form['actions']['submit']. Вам нужно будет выяснить, какой элемент является кнопкой отправки в вашей конкретной ситуации. Вы можете сделать это путем вывода переменной $ form; Я рекомендую установить модуль Devel и добавить dsm($form);к функции выше.


откуда вы знаете, что это может дать класс кнопке отправки. $ form ['actions'] ['submit'] ['# attribute'] ['class'] []
enjoylife

2
Это в справочнике по API форм, api.drupal.org/api/drupal/… .
Marcvangend

API показывает как этот $ form ['# attribute'] = array ('class' => array ('search-form')); почему вы пишете так: $ form ['actions'] ['submit'] ['# attribute'] ['class'] []. и есть []? спасибо
наслаждайся

7
Если вы сделаете это $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, вы переопределите все классы, которые уже установлены. Если бы вы это сделали $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, вы бы перезаписали не только существующие классы, но и все атрибуты. (PS См. Также мое дополнение к ответу выше.)
marcvangend

Это работает и в Drupal 8.
Achraf JEDAY

0

этот код в основном пользователь для добавления своего пользовательского класса на кнопку отправки формы.

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
это не правильно, элемент "class" в массиве #attributes должен быть массивом:'class' => array("mybtn-class", "mybtn-class2")
DrCord

Хотя ответ @devendra работает, следуя предложению @DrCord, он должен быть'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.