Bagaimana cara mengubah kelas tombol pengiriman?


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

Saya ingin mengubah kelas dari "form-submit" ke "form-submone".

Bagaimana saya bisa melakukannya? Dari mana datangnya "form-submit" kelas?

Jawaban:


22

Jika saya jadi Anda, saya tidak akan mengubah nama kelas melainkan menambahkan kelas Anda sendiri ke elemen formulir. Anda dapat melakukan ini dengan menerapkan hook_form_alter dalam modul khusus atau (dalam kasus Drupal 7) dalam tema Anda. Kode akan terlihat seperti ini:

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

Omong-omong, elemen tombol kirim belum tentu $form['actions']['submit']. Anda harus mencari tahu elemen mana yang merupakan tombol kirim dalam situasi spesifik Anda. Anda dapat melakukannya dengan mengeluarkan variabel $ form; Saya merekomendasikan menginstal modul Devel dan menambahkan dsm($form);ke fungsi di atas.


bagaimana Anda tahu ini dapat memberikan kelas ke tombol kirim. $ form ['tindakan'] ['kirim'] ['# atribut'] ['kelas'] []
enjoylife

2
Itu ada dalam referensi API Formulir, api.drupal.org/api/drupal/… .
marcvangend

api ditampilkan sebagai $ form ['# atribut'] = array ('class' => array ('search-form')); mengapa Anda menulis seperti ini. $ form ['tindakan'] ['kirim'] ['# atribut'] ['kelas'] []. dan punya []? terima kasih
enjoylife

7
Jika Anda mau $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, Anda akan mengganti semua kelas yang sudah ditetapkan. Jika Anda mau $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, Anda akan menimpa tidak hanya kelas yang ada, tetapi semua atribut. (PS Lihat juga tambahan saya pada jawaban di atas.)
marcvangend

Ini berfungsi di Drupal 8 juga.
Achraf JEDAY

0

kode ini pada dasarnya pengguna dapat menambahkan kelas kustom Anda pada tombol kirim formulir.

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
ini tidak benar, item "class" di larik #attributes harus berupa larik:'class' => array("mybtn-class", "mybtn-class2")
DrCord

Meskipun jawaban @devendra bekerja, mengikuti saran @DrCord, seharusnya'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.