Я пытаюсь создать простую форму с одним полем. У меня есть настраиваемое ограничение, созданное для проверки настраиваемого поля.
Я хотел бы добавить такое же ограничение к элементу формы вместо дублирования кода из класса ограничения в обработчике проверки формы.
пространство имен Drupal\mymodule\Form;
используйте Drupal\Core\Form\FormBase;
используйте Drupal\Core\Form\FormStateInterface;
/**
* Предоставляет форму «Мой модуль».
*/
класс ExampleForm расширяет FormBase {
/**
* {@inheritdoc}
*/
публичная функция getFormId() {
вернуть 'mymodule_example';
}
/**
* {@inheritdoc}
*/
общедоступная функция buildForm (массив $ form, FormStateInterface $ form_state) {
$ форма ['сообщение'] = [
'#тип' => 'текстовое поле',
'#title' => $this->t('Сообщение'),
'#required' => ИСТИНА,
];
$ форма ['действия'] = [
'#type' => 'действия',
];
$form['действия']['отправить'] = [
'#type' => 'отправить',
'#value' => $this->t('Отправить'),
];
вернуть $ форму;
}
/**
* {@inheritdoc}
*/
общедоступная функция validateForm (массив и $ форма, FormStateInterface $ form_state) {
// Проверяем возможность использования здесь ->addConstraint()
если (mb_strlen($form_state->getValue('сообщение')) < 10) {
$form_state->setErrorByName('name', $this->t('Сообщение должно быть не менее 10 символов.'));
}
}
/**
* {@inheritdoc}
*/
публичная функция submitForm (массив и $ форма, FormStateInterface $ form_state) {
$this->messenger()->addStatus($this->t('Сообщение отправлено.'));
$form_state->setRedirect('<front>');
}
}
Является ли это возможным?