Score:0

เมธอด setError หรือ setRebuilld แบ่งรูปแบบการตรวจสอบ

ธง vn
<?php

เนมสเปซ Drupal\my_custom_module\Form;

ใช้ Drupal\Core\Form\FormBase;
ใช้ Drupal\Core\Form\FormStateInterface;

/**
 * คลาส DefaultForm
 */
คลาส DefaultForm ขยาย FormBase {

  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นสาธารณะ getFormId () {
    กลับ 'default_form';
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ buildForm (อาร์เรย์ $form, FormStateInterface $form_state) {
    $แบบฟอร์ม['ทดสอบ'] = [
      '#type' => 'ช่องข้อความ',
      '#title' => $this->t('ทดสอบ'),
      '#maxlength' => 64,
      '#ขนาด' => 64,
      '#น้ำหนัก' => '0',
    ];
    $แบบฟอร์ม['ส่ง'] = [
      '#type' => 'ส่ง',
      '#value' => $this->t('ส่ง'),
    ];

    $form_state->setErrorByName('ทดสอบ', 'ข้อผิดพลาด');
    คืนฟอร์ม $;
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ validateForm (อาร์เรย์ &$form, FormStateInterface $form_state) {
    $form_state->setErrorByName('ทดสอบ', 'ข้อผิดพลาด');
    parent::validateForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ submitForm (อาร์เรย์ &$form, FormStateInterface $form_state) {
    $form_state->setRebuild(จริง);
  }

}

เมื่อใช้งาน setError, setErrorByName หรือ ตั้งสร้างใหม่ วิธีการไม่ว่าจะเป็นใน validateForm หรือ submitForm มันทำลายแบบฟอร์มของฉันโดยให้ a ขนาดหน่วยความจำที่อนุญาต XXX ไบต์หมดแล้ว เกิดข้อผิดพลาดเมื่อฉันส่งแบบฟอร์ม

ปัญหาคือ ฉันไม่เห็นอะไรเลยในบันทึก ยกเว้นข้อผิดพลาด "404" นับพัน ราวกับว่าฉันมีบางสิ่งที่ทำให้เกิดการวนซ้ำไม่สิ้นสุด

ในตัวอย่างฉันมีทั้งสองอย่าง setErrorByName และ ตั้งสร้างใหม่แต่มันเกิดขึ้นแม้กับหนึ่งในนั้น

คุณนึกถึงอะไรที่ทำให้เกิดข้อผิดพลาดนี้ได้บ้าง

cn flag
หากคำถามนี้เหมือนกับคำถามก่อนหน้าของคุณ (ซึ่งฉันคิดว่าคุณสงสัยว่าเป็นปัญหาเกี่ยวกับเซิร์ฟเวอร์) คุณอาจต้องให้รายละเอียดเพิ่มเติมเพื่อรับความช่วยเหลือ วิธีการเดียวกันนี้ถูกใช้ในหลาย ๆ เว็บไซต์โดยไม่มีปัญหา และการพยายามคาดเดาสิ่งที่อาจทำให้หน่วยความจำรั่วนอกโค้ดที่คุณแสดงนั้นเป็นเรื่องยากที่จะพูดน้อยที่สุด คุณปล่อยให้ดีบักเกอร์/ตัวสร้างโปรไฟล์ที่เหมาะสมหลุดออกไปแล้วหรือยัง คุณรู้หรือไม่ว่ามีการรั่วไหลเกิดขึ้นที่ไหน?
Corentin Le Fur avatar
vn flag
ฉันไม่ได้จริงๆ ฉันเพิ่งตรวจสอบว่าข้อบกพร่องไม่ปรากฏในโครงการที่คล้ายกัน (รุ่น Drupal เดียวกัน เซิร์ฟเวอร์ Docker เดียวกัน) ฉันจะทดสอบเพื่อดูว่าอะไรคือความแตกต่างระหว่างสองโครงการนี้ แล้วกลับมา
Score:0
ธง vn

โอเค ฉันเพิ่งรู้ว่าอะไรเป็นสาเหตุของบั๊ก

กลายเป็นว่ามาจากโมดูลแบบกำหนดเองอื่น ซึ่งหนึ่งในคอนโทรลเลอร์ของฉันส่งคืนข้อยกเว้น 404ฉันยังไม่รู้ว่าทำไมหรืออย่างไร แต่เมื่อใด (และเฉพาะเมื่อ) ส่งแบบฟอร์ม ข้อยกเว้น 404 ถูกทริกเกอร์

ขออภัยที่ทำให้คุณเสียเวลาหากคุณพยายามทำความเข้าใจกับปัญหานี้แล้ว

โพสต์คำตอบ

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