Сообщение об ошибке Symfony2 в поле ввода
-
25-10-2019 - |
Вопрос
Я хотел бы отобразить сообщение об ошибке в поле, для которого оно предназначено. Я знаю, как поместить сообщение об ошибке в поле, но я хочу найти динамический способ проверить после повторного раздачи, если вставленное значение не является самим сообщением об ошибке. Я использую аннотации доктрины. Например, если поле «заголовок», сообщение об ошибке будет «заголовок должно быть заполнено!». Таким образом, поле заголовка больше не пустое, я нажимаю снова, и сейчас это действительно. Я не хочу проверять каждое поле, какif $entity->getTitle() == "The title must be filled" ...
Мне удалось сделать это с не отображаемыми ошибками Divs в ветке и jQuery, но я хочу знать, есть ли лучший способ сделать это от контроллера? Спасибо
Решение
Вы спрашиваете, как правильно сделать что -то неправильно ... если входное значение не является тем, которое вы хотите обработать, это никогда не должно было быть значением с самого начала. При этом, я уверен, что у вас есть причины ...
Вам нужно слушать FormEvents::BIND_CLIENT_DATA
и очистить данные формы, если она соответствует вашей строке ошибки.
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('title');
$builder->get('title')->addEventListener(
FormEvents::BIND_CLIENT_DATA,
function(FilterDataEvent $event)
{
if ('The title must be filled' == $event->getData()) {
$event->setData('');
}
},
);
Если вы хотите применить это поведение во всем мире, вам нужно прикрепить этого слушателя, используя расширение типа формы, которое расширяется 'field'
. Анкет Вам также необходимо будет нарушить все возможные сообщения об ошибках проверки для текущего поля, используя валидатор, и пройти через переводчик, а затем сравнить результаты с данными события.