Вручную измените или перехватите сообщение о недопустимом токене CSRF в Symfony2.1

Я использую Symfony2.1. Он имеет встроенную защиту CSRF для форм. Если токен CSRF недействителен, возвращается сообщение об ошибке: "Токен CSRF недействителен. Попробуйте повторно отправить форму".

Я показываю его в верхней части формы в своем шаблоне Twig, используя классический вызов:

{{ form_errors(form) }}  

Как я могу изменить возвращенное сообщение?

В качестве альтернативы, более продвинутая возможность — перехватить этот тип ошибки, чтобы показать множество опций/ссылок в моем шаблоне Twig. Есть идеи?


person JeanValjean    schedule 19.11.2012    source источник


Ответы (1)


Пробовали ли вы в файле validators.{locale_code}.yml задать перевод для ключа The CSRF token is invalid. Please try to resubmit the form? Чтобы изменить сообщение по умолчанию, вы можете попробовать это:

 #MyBundle\Resources\translations\validators.en.yml

 The CSRF token is invalid. Please try to resubmit the form : My custom CSRF error

Сообщение об ошибке выдается здесь, и оно класса FormError... поэтому его можно перевести.

person Roberto    schedule 19.11.2012
comment
Нет! Где я могу найти/установить этот файл? Более того, есть ли способ переопределить класс CsrfValidationListener по умолчанию? - person JeanValjean; 19.11.2012
comment
Я еще не пробовал, но наверняка вы можете установить прослушиватель в построителе форм (просто проверьте репозиторий, указанный выше, чтобы узнать, как это сделать) и прикрепить событие прослушивателя с более высоким приоритетом по умолчанию, добавленным CSRF защита. - person Roberto; 19.11.2012
comment
Есть ли у слушателей приоритет? - person JeanValjean; 19.11.2012
comment
да - person Roberto; 19.11.2012