Score:1

ฉันจะบังคับให้เพจเจอร์อัปเดตได้อย่างไร

ธง pl

ฉันมีแบบฟอร์มที่กำหนดเองซึ่งสร้างด้วย Form API การไหลทั่วไปคือ:

  1. สร้างและแสดงแบบฟอร์ม
  2. รับอินพุตของผู้ใช้
  3. สร้างใหม่และแบบฟอร์ม
    • แบบสอบถามตามการป้อนข้อมูลของผู้ใช้ด้วยการเพิ่ม

      $แบบสอบถาม = $แบบสอบถาม
        ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
        ->limit($values['items']);
      

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

ดังนั้น หากข้อความค้นหาแรก (เช่น "เป็ด") มีผลลัพธ์ 14 หน้า และฉันอยู่ในหน้าที่ 3 ของผลการค้นหาเป็ด เมื่อฉันเปลี่ยนฟิลด์ข้อความค้นหาเป็น "ไก่" และส่ง ผลลัพธ์จริงจะแสดงสิ่งที่ถูกต้อง แต่เพจเจอร์ยังคงแสดง 14 หน้าแทนที่จะเป็น 35 สำหรับไก่ และมันทำให้ฉันอยู่ที่หน้าที่ 3 แทนที่จะพาฉันไปที่หน้าแรก)

ฉันจะบังคับให้เพจเจอร์อัปเดตได้อย่างไร

Score:2
ธง pl

ฉันคิดออก หวังว่านี่จะช่วยคนอื่นด้วยคำถามที่คล้ายกัน

แทนที่จะทำก $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().

โพสต์คำตอบ

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