Вопрос

Я хотел бы отобразить сообщение об ошибке в поле, для которого оно предназначено. Я знаю, как поместить сообщение об ошибке в поле, но я хочу найти динамический способ проверить после повторного раздачи, если вставленное значение не является самим сообщением об ошибке. Я использую аннотации доктрины. Например, если поле «заголовок», сообщение об ошибке будет «заголовок должно быть заполнено!». Таким образом, поле заголовка больше не пустое, я нажимаю снова, и сейчас это действительно. Я не хочу проверять каждое поле, как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'. Анкет Вам также необходимо будет нарушить все возможные сообщения об ошибках проверки для текущего поля, используя валидатор, и пройти через переводчик, а затем сравнить результаты с данными события.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top