Сообщение об ошибке Symfony2 в поле ввода - PullRequest
0 голосов
/ 10 января 2012

Я хотел бы отобразить сообщение об ошибке в поле, для которого оно.Я знаю, как поместить сообщение об ошибке в поле, но я хочу найти динамический способ проверки после повторной отправки, если введенное значение не является само сообщением об ошибке.Я использую аннотации доктрины.Например, если поле имеет название «title», сообщение об ошибке будет «Заголовок должен быть заполнен!».Таким образом, поле заголовка больше не является пустым, я нажимаю кнопку отправить еще раз, и теперь оно действительно.Я не хочу проверять каждое отдельное поле, например if $entity->getTitle() == "The title must be filled" ... Мне удалось сделать это с не отображаемыми ошибками в ветке и jquery, но я хочу знать, есть ли лучший способ сделать это из контроллера?Спасибо

1 Ответ

1 голос
/ 10 января 2012

Вы спрашиваете, как правильно сделать что-то неправильно ... Если входное значение не является значением, которое вы хотите обработать, оно никогда не должно было быть значением с самого начала.При этом, я уверен, у вас есть свои причины ...

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

...