Làm cách nào tôi có thể tìm ID biểu mẫu của biểu mẫu?


22

Làm thế nào để tôi có được id mẫu của mẫu của tôi? Tôi mới bắt đầu thực hiện các mô-đun của mình và tôi đứng yên. Tôi đã nhận được mã này từ người khác và đang cố gắng tùy chỉnh nó:

function hook_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'the form id for the node form') {
    $form['#submit'][] = 'my_custom_submit_handler';
  }
}


vui lòng xem câu trả lời cho câu hỏi trên, nó cũng sẽ trả lời câu hỏi của bạn
Laxman13

1
Câu hỏi ở đây khá khác nhau; nó không hỏi làm thế nào để xác định một phần tử biểu mẫu, nhưng đó là ID biểu mẫu cần được kiểm tra khi triển khai hook_form_alter(). Cũng được cung cấp mã được báo cáo, tôi sẽ nói câu hỏi này là khác nhau.
kiamlaluno

Câu trả lời:


17

Hãy thử in các biến biểu mẫu với hàm PHP print_r .

function hook_form_alter(&$form, &$form_state, $form_id) {
  print_r($form);
}

Khi bạn truy cập trang biểu mẫu được bật, các biến (và tên) sẽ được hiển thị.

Một cách dễ dàng hơn để truy cập (hoặc đúng hơn là xem) thông tin sẽ sử dụng chức năng dpm () được cung cấp bởi mô-đun Devel . Bạn có thể sử dụng nó giống như cách bạn sẽ sử dụng print_r.


1
Cho mã được báo cáo, không cần phải xem nội dung của $formbiến.
kiamlaluno

10
Ngoài ra $ form_id là một thông số bạn có thể in trực tiếp !!
niksmac

1
Nếu bạn có Devel kích hoạt, chỉdpm($form_id);
Không Sssweat

35

Tìm ID FORM mà không cần cài đặt mô-đun

Tìm ID mẫu rất dễ dàng không cần cài đặt các mô-đun và tất cả

BƯỚC 1: Mở bạn từ trang chỉnh sửa của nó (HOẶC kiểm tra biểu mẫu của bạn).

BƯỚC 2: nếu dạng nút của nó tìm "dạng nút " trong phần tử kiểm tra

Tìm id mẫukiểm tra bạn đang ở trong phần tử biểu mẫu .

BƯỚC 3: xem hình ảnh đính kèm văn bản màu xanh lá cây được tô sáng là ID của biểu mẫu

BƯỚC 4: QUAN TRỌNG Cuối cùng nếu bạn muốn sử dụng nó hook_form_alter()thay thế hypen bằng dấu gạch dưới

Ví dụ: yourform_id_with_content_type_name_form

Giống như khôn ngoan, bạn có thể tìm id của bất kỳ biểu mẫu nào trong drupal, tất cả những gì bạn phải làm là kiểm tra-> tìm phần tử biểu mẫu và tìm kiếm thuộc tính ID và sử dụng nó

Hy vọng nó giúp :)


1
Điều này không hiệu quả với tôi khi tôi muốn bảo vệ mẫu bình luận trong trang web Drupal 8. Tôi đã tìm thấy một giải pháp trong nhận xét này trên drupal.org , nơi nó nói: 1) Tìm một phần tử đầu vào ẩn có namethuộc tính có giá trị "form_id". 2) Nhìn vào valuethuộc tính của phần tử đầu vào - giá trị của thuộc tính là ID mẫu mong muốn. Ví dụ: Biểu mẫu nhận xét trên các nút câu chuyện có ID mẫu "comment_comment_node_story_form". Nếu bạn thích bạn có thể kết hợp thông tin mới này trong câu trả lời của bạn.
herzbube

10

Nếu biểu mẫu web của bạn được đặt tại "www.mydomain.com/node3531" thì ID biểu mẫu của bạn sẽ là "webform_client_form_351". Vì vậy, bất kể nid của bạn là gì - đó là ID mẫu của bạn.


2
Câu hỏi không phải là về mô-đun Webform. Đó là về hình thức chỉnh sửa nút.
kiamlaluno

Câu hỏi là về biểu mẫu chỉnh sửa nút nhưng nếu bạn muốn tìm bất kỳ ID biểu mẫu webform nào thì điều này hoạt động chính xác.
herci 7/07/2015

Câu trả lời này là đúng, chỉ cần thử nghiệm nó.
Abbeyenteherrera

6

Nếu bạn biết mã ở đâu xác định hình thức bạn muốn thay đổi, hãy nhìn vào đó. Id biểu mẫu chỉ là tên của hàm xác định biểu mẫu đó.

Ví dụ: Lượt xem xác định hàm Views_ui_edit_view_form trên dòng 875 lượt xem / gồm / admin.inc. Bộ lọc khung nhìn Chọn thứ bậc tìm kiếm id mẫu đó trên dòng 50 của hVELical_select / module / hs_taxonomy_view.module trong hàm hood_form_alter.


4

Sử dụng drupal_set_message()chức năng để hiển thị id mẫu.

function hook_form_alter(&$form, $form_state, $form_id) {
drupal_set_message($form_id);
// other codes
}

4

Sử dụng mô-đun Nhận biểu mẫu ID để dễ dàng tìm ra id mẫu của bất kỳ biểu mẫu nào trong Drupal.

Đây là một trích dẫn về nó từ trang dự án của nó:

Bằng cách di chuột qua bất kỳ hình thức nào, bạn sẽ thấy một liên kết theo ngữ cảnh có sẵn. Bằng cách mở rộng liên kết, bạn sẽ thấy ID mẫu. Nhấp vào liên kết và bạn sẽ thấy một cửa sổ phương thức với id biểu mẫu có thể sao chép và gợi ý hook hook_form_FORM_ID_alter ().

Mô-đun này không được chấp nhận. Nó đã được cải thiện, mở rộng và đổi thương hiệu thành gỡ lỗi dạng Devel ; sử dụng nó thay thế

Tiết lộ: Tôi đang duy trì các mô-đun này.


3

Vì mã bạn đã báo cáo đang tìm ID mẫu của biểu mẫu nút, có hai trường hợp.

Drupal 6

Nếu mã đang cố gắng thay đổi biểu mẫu được sử dụng để đặt cài đặt cho loại nội dung, thì nó nên sử dụng câu lệnh IF sau đây.

if ($form_id == 'node_type_form' && isset($form['identity']['type'])) { /* … */ }

Nếu mã đang cố gắng thay đổi hình thức chỉnh sửa nút, thì mã nên sử dụng câu lệnh IF sau đây.

if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }

Drupal 7 trở lên

Trong trường hợp đầu tiên, câu lệnh IF phải là câu lệnh sau:

if ($form_id == 'node_type_form') { /* … */ }

Sử dụng một cách tiếp cận khác, giả sử rằng mymodule là tên viết tắt của mô-đun của bạn, bạn có thể sử dụng mymodule_form_node_type_form_alter(&$form, &$form_state, $form_id). Kể từ Drupal 7, tất cả các hook được sử dụng để thay đổi biểu mẫu được thực hiện bởi một mô-đun khác được lấy $form_idlàm tham số cuối cùng. Xem hook_form_alter () , hook_form_FORM_ID_alter () , hook_form_BASE_FORM_ID_alter () .

Trong trường hợp thứ hai, câu lệnh IF được sử dụng tương tự cho Drupal 6.

if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }

1

Trước tiên hãy cài đặt mô-đun Devel. Sau đó, tạo một mô-đun như mã bên dưới

function hook_form_alter(&$form, &$form_state, $form_id) {
  dpm($form);
}

Sau đó, bạn có thể xem TẤT CẢ chi tiết của biểu mẫu, như ID biểu mẫu, tên trường của biểu mẫu, v.v.

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.