วิธีสร้างฟอร์ม GET


10

ตัวอย่างเช่นแบบฟอร์มตัวกรองในพื้นที่ผู้ดูแลระบบสามารถเป็นรูปแบบ GET ได้ดีที่สุดวิธีที่พวกเขาสามารถคั่นหน้าได้และสามารถรักษาตัวกรองข้ามเพจเพจได้

วิธีที่ดีที่สุดใช้ form_api สำหรับแบบฟอร์มดังกล่าวได้อย่างไร _validate hooks จะถูกส่งหรือไม่ ตะขอ _submit สามารถตัดออกได้หรือไม่?

ตัวอย่างเช่นตัวกรองที่เปิดรับมุมมอง แต่โค้ดในมุมมองการจัดการนี้ซับซ้อนและซับซ้อนเกินกว่าที่จะใช้เป็นตัวอย่างที่ดีสำหรับเมื่อพัฒนาอินเตอร์เฟสแบบกำหนดเองด้วยรูปแบบตัวกรองแบบง่าย


ฉันไม่เข้าใจคำถาม คุณสามารถสร้างหรือ hook_alter ฟอร์มใดก็ได้เพื่อคว้า GET-data ถ้านั่นคือสิ่งที่คุณหมายถึง
Letharion

ฉันได้อัปเดตคำถามโดยอ้างอิงถึงตัวอย่างหนึ่งแล้ว
berkes

คำตอบ:


11

ใช้พารามิเตอร์ #method ของฟอร์มดังนี้:

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

แน่ใจ นั่นคือส่วนหนึ่ง แต่วิธีการเกี่ยวกับการตรวจสอบส่งเบ็ดและอื่น ๆ มีชุดหรือไม่
berkes

2
วิธีการของแบบฟอร์มจะต้องตั้งค่าให้โพสต์เพื่อให้มีการส่งและตรวจสอบความถูกต้องของฟังก์ชันที่เรียกว่าโดยปริยาย
Lester Peabody

ที่เกี่ยวข้อง: form_dataคีย์always_processและmethodยังสามารถตั้งค่าในการกำหนดรูปแบบซึ่งส่งผลในการตรวจสอบ + กระบวนการเบ็ดถูกเรียกใช้ แต่ฉันไม่พบตัวอย่างการใช้งานสำหรับสิ่งนี้และฉันยังคงform_stateมีmethodชุดคีย์เป็นpost!
artfulrobot

4

ในกรณีที่ทุกคนสะดุดกับคำถามนี้นี่เป็นตัวอย่างที่สมบูรณ์แบบในชีวิตจริง แต่เป็นตัวอย่างที่ง่ายมาก :)

คุณจะต้องกำหนดแบบฟอร์ม

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;
}

และจากนั้นคุณสามารถใช้มัน

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

บรรทัดสุดท้ายอาจเป็นบล็อก ['เนื้อหา'] หรืออะไรก็ได้ที่คุณต้องการ


สำหรับฟอร์มการค้นหาคุณอาจต้องใส่$form_state['redirect'] = false;ตัวจัดการการส่งเพื่อปิดใช้งานการเปลี่ยนเส้นทางหลังจากส่งแบบฟอร์มแล้ว
Ali Gangji
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.