Я бы хотел показать сообщение об ошибке в поле, для которого оно предназначено. Я знаю, как поместить сообщение об ошибке в поле, но я хочу найти динамический способ проверки после повторного представления, если вставленное значение не является самим сообщением об ошибке. Я использую аннотации доктрины. Например, если поле «title», сообщение об ошибке будет «Заголовок должен быть заполнен!». Итак, поле заголовка больше не пустое, я снова нажимаю кнопку «Отправить», и он действителен сейчас. Я не хочу проверять каждое поле, как if $entity->getTitle() == "The title must be filled" ...
Мне удалось сделать это, не отображая div div div в ветке и jquery, но я хочу знать, есть ли лучший способ сделать это с контроллера ? СпасибоСообщение об ошибке Symfony2 в поле ввода
ответ
Вы спрашиваете, как правильно сделать что-то не так ... Если входное значение не является значением, которое вы хотите обработать, оно не должно было начинаться с начала. Это, как говорится, я уверен, что у вас есть причины ...
Вам необходимо выслушать 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'
. Вам также необходимо проанализировать все возможные сообщения об ошибках проверки для текущего поля с помощью валидатора и передать их через переводчик, а затем сравнить результаты с данными события.
Это почти то же самое, если я проверяю его в контроллере, вам нужно проверять каждое поле по одному. Я хочу что-то вроде проверки того, что является сообщением об ошибке поля, и если это значение поля, то оно недействительно. Поэтому динамически проверяйте все утверждения, а не один за другим. Спасибо за ваш ответ в любом случае – Matthew87
Я обновил свой ответ, чтобы описать, как вы могли это сделать, но я не могу сделать это за вас: P –
Спасибо, я постараюсь это сделать! – Matthew87
Просто идея: вы можете удалить ошибки с помощью jQuery перед отправкой формы. –
Я сделал это именно так, но я думаю, что было бы лучше сделать это прямо с контроллера, поэтому я спрашиваю, как это возможно, если это так. – Matthew87