Score:0

ฉันจะเพิ่มข้อจำกัดให้กับองค์ประกอบแบบฟอร์มที่กำหนดเองได้อย่างไร

ธง fr

ฉันกำลังพยายามสร้างแบบฟอร์มอย่างง่ายด้วยฟิลด์เดียว ฉันมีข้อ จำกัด ที่กำหนดเองที่สร้างขึ้นสำหรับการตรวจสอบความถูกต้องของฟิลด์ที่กำหนดเอง

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

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

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

/**
 * ให้แบบฟอร์มโมดูลของฉัน
 */
คลาส ExampleForm ขยาย FormBase {

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

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ buildForm (อาร์เรย์ $form, FormStateInterface $form_state) {

    $แบบฟอร์ม['ข้อความ'] = [
      '#type' => 'textarea',
      '#title' => $this->t('ข้อความ'),
      '#required' => จริง,
    ];

    $แบบฟอร์ม['การกระทำ'] = [
      '#type' => 'การกระทำ',
    ];
    $form['actions']['submit'] = [
      '#type' => 'ส่ง',
      '#value' => $this->t('ส่ง'),
    ];

    คืนฟอร์ม $;
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ validateForm (อาร์เรย์ &$form, FormStateInterface $form_state) {
    // ตรวจสอบความเป็นไปได้หากสามารถใช้ ->addConstraint() ได้ที่นี่
    ถ้า (mb_strlen($form_state->getValue('ข้อความ')) < 10) {
      $form_state->setErrorByName('name', $this->t('ข้อความควรมีอย่างน้อย 10 ตัวอักษร'));
    }
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ submitForm (อาร์เรย์ &$form, FormStateInterface $form_state) {
    $this->messenger()->addStatus($this->t('ส่งข้อความแล้ว'));
    $form_state->setRedirect('<ด้านหน้า>');
  }

}

เป็นไปได้ไหม?

ru flag
ไม่ และมันไม่สมเหตุสมผลเลย ข้อจำกัดช่วยรับประกันความสมบูรณ์ของข้อมูล ดังนั้นจึงแนบมากับฟิลด์เดียว ไม่ใช่แบบฟอร์ม การตรวจสอบความถูกต้องของแบบฟอร์ม OTOH ช่วยให้มั่นใจในตรรกะทางธุรกิจ
ru flag
เช่น."วันเกิดต้องอยู่ในรูปแบบ YYYY-MM-DD" คือตัวอย่างข้อจำกัด "ถ้าวันเกิด >= 2010-01-01 field_parent_name ต้องไม่ว่างเปล่า" เป็นตัวอย่างสำหรับตรรกะทางธุรกิจ ข้อจำกัดจะถูกตรวจสอบในระดับการจัดเก็บเสมอ โดยไม่ขึ้นกับรูปแบบใดๆ

โพสต์คำตอบ

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