Làm thế nào để tôi thay đổi lớp nút trình?


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

Tôi muốn thay đổi lớp từ "form-submit" thành "form-submitone".

Làm thế nào tôi có thể làm điều đó? Trường hợp "lớp nộp mẫu" đến từ đâu?

Câu trả lời:


21

Nếu tôi là bạn, tôi sẽ không thay đổi tên lớp mà chỉ thêm lớp của riêng bạn vào thành phần biểu mẫu. Bạn có thể làm điều này bằng cách triển khai hook_form_alter trong một mô-đun tùy chỉnh hoặc (trong trường hợp Drupal 7) trong chủ đề của bạn. Mã sẽ trông giống như thế này:

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

Nhân tiện, yếu tố nút gửi không nhất thiết phải $form['actions']['submit']. Bạn sẽ phải tìm ra yếu tố nào là nút gửi trong tình huống cụ thể của bạn. Bạn có thể làm điều đó bằng cách xuất ra biến $ form; Tôi khuyên bạn nên cài đặt mô-đun Devel và thêm dsm($form);vào chức năng trên.


làm thế nào để bạn biết điều này có thể cung cấp cho một lớp học để nút gửi $ form [ 'hành động'] [ 'submit'] [ '# thuộc tính'] [ 'lớp'] [].
enjoylife

2
Nó nằm trong tài liệu tham khảo API Forms, api.drupal.org/api/drupal/ ,.
marcvangend

api hiển thị dưới dạng $ form ['# Properties'] = mảng ('class' => mảng ('search-form')); tại sao bạn viết như thế này. $ form ['hành động'] ['submit'] ['# thuộc tính'] ['class'] []. và có []? cảm ơn bạn
năm11

6
Nếu bạn sẽ làm $form['actions']['submit']['#attributes']['class'] = array('form-submitone');, bạn sẽ ghi đè tất cả các lớp đã được đặt. Nếu bạn sẽ làm $form['actions']['submit']['#attributes'] = array('class' => array('form-submitone'));, bạn sẽ ghi đè lên không chỉ các lớp hiện có, mà tất cả các thuộc tính. (PS Xem thêm phần bổ sung của tôi vào câu trả lời ở trên.)
marcvangend

0

mã này về cơ bản người dùng dor thêm lớp tùy chỉnh của bạn vào nút gửi biểu mẫu.

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
Điều này không chính xác, mục "lớp" trong mảng #attribut cần phải là một mảng:'class' => array("mybtn-class", "mybtn-class2")
DrCord

Mặc dù câu trả lời @devendra hoạt động, theo đề xuất của @DrCord, nhưng nó phải là'#attributes' => array('class' => array('mybtn', 'mybtn-2'))
johnatasjmo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.