Cách tạo biểu mẫu GET


10

Ví dụ: biểu mẫu bộ lọc trên các khu vực quản trị tốt nhất có thể là biểu mẫu GET, theo cách đó chúng có thể được đánh dấu và có thể duy trì các bộ lọc trên các trang pager.

Làm thế nào một người có thể sử dụng tốt nhất form_api cho các hình thức như vậy? Các móc _validate sẽ được gửi? Móc _submit có thể được bỏ qua không?

Ví dụ: các bộ lọc tiếp xúc với chế độ xem hoạt động theo cách này; Nhưng mã trong chế độ xem xử lý này là phức tạp và phức tạp, quá phức tạp để được sử dụng làm ví dụ tốt khi phát triển giao diện tùy chỉnh với các hình thức lọc đơn giản.


Tôi không hiểu câu hỏi. Bạn có thể tạo hoặc hook_alter bất kỳ hình thức nào để lấy dữ liệu GET, nếu đó là ý bạn.
Letharion

Tôi đã cập nhật câu hỏi với một tham chiếu đến một bài kiểm tra.
cập bến

Câu trả lời:


11

Sử dụng tham số #method của biểu mẫu như thế này:

<?php
  $form['#method'] = 'get';
?>

Chắc chắn rồi. Đó là một phần. Nhưng làm thế nào về xác nhận, gửi hook, và như vậy. Là bộ?
cập bến

2
Phương thức của biểu mẫu phải được đặt để đăng cho các chức năng gửi và xác thực của nó được gọi ngầm.
Lester Peabody

Liên quan: form_datacác khóa always_processmethodcũng có thể được đặt trong định nghĩa biểu mẫu dẫn đến xác thực + móc quy trình đang được chạy. Nhưng tôi không thể tìm thấy một ví dụ về việc sử dụng cho việc này và tôi vẫn kết thúc bằng việc form_statechứa một methodbộ khóa post!
artfulrobot

4

Chỉ trong trường hợp bất kỳ ai vấp phải câu hỏi này, đây là một ví dụ thực tế hoàn chỉnh hơn, nhưng rất đơn giản :)

bạn sẽ muốn xác định mẫu

function YOURMODULE_search_form($form, &$form_state) {
  $form['#method'] = 'get';
  $form['#action'] = '/search';
  $form['#attributes'] = array('class' => array('mymod-search'));
  $form['search'] = array(
    '#type' => 'textfield',
    '#size' => 20,
  );
  return $form;
}

và sau đó bạn có thể sử dụng nó

$searchform = drupal_get_form('YOURMODULE_search_form');
$output .= drupal_render($searchform);

Dòng cuối cùng có thể là một khối ['nội dung'] hoặc bất cứ thứ gì bạn cần.


Đối với các biểu mẫu tìm kiếm, bạn cũng có thể muốn đưa $form_state['redirect'] = false;vào trình xử lý trình để vô hiệu hóa chuyển hướng sau khi biểu mẫu được gửi.
Ali Gangji
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.