ฉันกำลังพยายามสร้างแบบฟอร์มอย่างง่ายด้วยฟิลด์เดียว ฉันมีข้อ จำกัด ที่กำหนดเองที่สร้างขึ้นสำหรับการตรวจสอบความถูกต้องของฟิลด์ที่กำหนดเอง
ฉันต้องการเพิ่มข้อจำกัดเดียวกันให้กับองค์ประกอบฟอร์ม แทนที่จะทำซ้ำโค้ดจากคลาสข้อจำกัดในตัวจัดการการตรวจสอบความถูกต้องของฟอร์ม
เนมสเปซ 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('<ด้านหน้า>');
}
}
เป็นไปได้ไหม?