ฉันคิดออก หวังว่านี่จะช่วยคนอื่นด้วยคำถามที่คล้ายกัน
แทนที่จะทำก $formstate->setRebuild();
ใน ส่งแบบฟอร์ม
วิธีการ ฉันเปลี่ยนเป็น
$form_state->setRedirect(
'sliker_drupal_backend.browser',
[],
[
'แบบสอบถาม'=>[
'ตรรกะ'=>$form_state->getValue('ตรรกะ'),
'items'=>$form_state->getValue('items'),
'วลี'=>$form_state->getValue('วลี'),
'visibility'=>$form_state->getValue('การมองเห็น'),
'ids'=>$form_state->getValue('ids'),
]
]);
เดอะ setRedirect()
วิธีการใช้สามข้อโต้แย้ง:
- ชื่อเครื่องเส้นทาง
- อาร์กิวเมนต์ (เพื่อเติม "ตัวยึด" ในเส้นทางเส้นทาง)
- ตัวเลือกที่เป็นตัวเลือกใด ๆ ที่สามารถส่งผ่านไปยังก
\Drupal\Core\Url
โดยการค้นหารหัส ตัวเลือกที่พบคืออาร์เรย์ที่เชื่อมโยงและคีย์สามารถเป็นอะไรก็ได้:
- 'ข้อความค้นหา': อาร์เรย์ของคู่คีย์/ค่าข้อความค้นหา (ไม่มีการเข้ารหัส URL) เพื่อต่อท้าย URL
- 'แฟรกเมนต์': ตัวระบุแฟรกเมนต์ (ชื่อจุดยึด) เพื่อต่อท้าย URL อย่าใส่อักขระ '#' นำหน้า
- 'สัมบูรณ์': ค่าเริ่มต้นเป็น FALSE บังคับให้เอาต์พุตเป็นลิงก์สัมบูรณ์หรือไม่ (ขึ้นต้นด้วย http:) มีประโยชน์สำหรับลิงก์ที่จะแสดงนอกไซต์ เช่น ในฟีด RSS
- 'attributes': อาร์เรย์ที่เชื่อมโยงของแอตทริบิวต์ HTML ที่จะถูกเพิ่มในแท็ก anchor หากคุณใช้คลาส \Drupal\Core\Link เพื่อสร้างลิงก์
- 'ภาษา': วัตถุภาษาทางเลือกที่ใช้เพื่อค้นหานามแฝงสำหรับ URL หากไม่ใส่ $options['language'] ค่าเริ่มต้นเป็นภาษาปัจจุบันสำหรับประเภทภาษา LanguageInterface::TYPE_URL
- 'https': URL นี้ควรชี้ไปยังตำแหน่งที่ปลอดภัยหรือไม่ หากไม่ได้กำหนดไว้ ระบบจะใช้โครงร่างปัจจุบัน ดังนั้นผู้ใช้จะยังคงใช้ HTTP หรือ HTTPS ตามลำดับ TRUE บังคับใช้ HTTPS และ FALSE บังคับใช้ HTTP
จากนั้นฉันอัปเดตตรรกะของฉันในแบบฟอร์มเพื่อค้นหาพารามิเตอร์การค้นหาและใช้ข้อมูลนั้นหากมีอยู่
ดู https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Form!FormState.php/function/FormState%3A%3AsetRedirect/8.9.x สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ setRedirect()
.