Як змінити клас кнопки подання?


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

Я хочу змінити клас з "форма-подати" на "форма-подати".

Як я можу це зробити? Звідки береться клас "форму-подати"?

Відповіді:


22

Якби я був ти, я б не змінював назву класу, а додав би свій власний клас до елемента форми. Ви можете зробити це, застосувавши крок_форму_алтер у спеціальному модулі або (у випадку з 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'] ['# attributes'] ['class'] []
enjolife

2
Це у посиланні API Forms, api.drupal.org/api/drupal/… .
marcvangend

api показує як цей $ form ['# attributes'] = array ('class' => array ('search-form')); чому ви пишете так. $ form ['Actions'] ['submit'] ['# attributes'] ['class'] []. і мати []? дякую
enjolife

7
Якби ви зробили це $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, ви перемогли б усі класи, які вже встановлені. Якби ви зробили це $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, ви перезаписали б не лише існуючі класи, а й усі атрибути. (PS Дивіться також моє доповнення до відповіді вище.)
marcvangend

Це працює і в Drupal 8.
Ахраф ІДЕЙ

0

цей код в основному користувач dor додати свій власний клас на кнопку подання форми.

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
це не правильно, елемент "клас" в масиві #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.