Tôi đang cố gắng tạo một biểu mẫu đơn giản với một trường duy nhất. Tôi có một ràng buộc tùy chỉnh được tạo để xác thực trường tùy chỉnh.
Tôi muốn thêm cùng một ràng buộc vào phần tử biểu mẫu, thay vì sao chép mã từ lớp ràng buộc trong trình xử lý xác thực biểu mẫu.
không gian tên Drupal\mymodule\Form;
sử dụng Drupal\Core\Form\FormBase;
sử dụng Drupal\Core\Form\FormStateInterface;
/**
* Cung cấp biểu mẫu Mô-đun của tôi.
*/
lớp Ví dụForm mở rộng FormBase {
/**
* {@inheritdoc}
*/
hàm công khai getFormId() {
trả về 'mymodule_example';
}
/**
* {@inheritdoc}
*/
chức năng công khai buildForm(mảng $form, FormStateInterface $form_state) {
$form['nội dung'] = [
'#type' => 'vùng văn bản',
'#title' => $this->t('Tin nhắn'),
'#required' => ĐÚNG,
];
$form['hành động'] = [
'#type' => 'hành động',
];
$form['actions']['submit'] = [
'#type' => 'gửi',
'#value' => $this->t('Gửi'),
];
trả về biểu mẫu $;
}
/**
* {@inheritdoc}
*/
hàm công khai validateForm(mảng &$form, FormStateInterface $form_state) {
// Kiểm tra xem có thể sử dụng ->addConstraint() tại đây không
if (mb_strlen($form_state->getValue('message')) < 10) {
$form_state->setErrorByName('name', $this->t('Tin nhắn phải có ít nhất 10 ký tự.'));
}
}
/**
* {@inheritdoc}
*/
hàm công khai submitForm(mảng &$form, FormStateInterface $form_state) {
$this->messenger()->addStatus($this->t('Tin nhắn đã được gửi.'));
$form_state->setRedirect('<front>');
}
}
Có thể không?