ฉันจะเปลี่ยนคลาสปุ่มส่งได้อย่างไร


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

ฉันต้องการเปลี่ยนชั้นเรียนจาก "form-submit" เป็น "form-submitone"

ฉันจะทำมันได้อย่างไร คลาส "form-submit" มาจากไหน

คำตอบ:


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'] ['# attributes'] ['class'] []
Enjoylife

2
มันอยู่ในรูปแบบการอ้างอิง API, api.drupal.org/api/drupal/...
marcvangend

api แสดงเป็น $ form ['# attributes'] = array ('class' => array ('search-form')); ทำไมคุณถึงเขียนแบบนี้ $ form ['actions'] ['submit'] ['# attributes'] ['class'] [] และมี []? ขอบคุณ
Enjoylife

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
นี้ไม่ถูกต้องรายการ "คลาส" ในอาร์เรย์ #attributes ต้องเป็นอาร์เรย์:'class' => array("mybtn-class", "mybtn-class2")
DrCord

แม้ว่า @devendra จะทำงานได้ตามคำแนะนำ @DrCord แต่ควรเป็น'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.