Symfony2 CSRF недействителен
Хорошо, поэтому сегодня я обновил свою базу данных с новой информацией из нашей "живой" базы данных... И с тех пор у меня были проблемы с одной из моих форм. Если вам нужен какой-либо код, дайте мне знать, и я отредактирую его и отправлю код...
У меня есть форма отчета, у которого есть поле диапазона дат и выпадающее меню агента. Когда я впервые посещаю страницу, я вижу это в начале формы:
The CSRF token is invalid. Please try to resubmit the form
Итак, я перехожу к одной из моих других форм, которая имеет тот же тип информации, и проверяю _token, и это то, что выходит:
<input type="hidden" id="ecs_crmbundle_TimeClockReportType__token" name="ecs_crmbundle_TimeClockReportType[_token]" value="87e358fbc4d6d3e83601216b907a02170f7bcd92" />
<input type="hidden" id="ecs_crmbundle_SimpleSalesReportType__token" name="ecs_crmbundle_SimpleSalesReportType[_token]" value="87e358fbc4d6d3e83601216b907a02170f7bcd92" />
Первый - тот, который показывает ошибку, и SimpleSalesReport не... Любая идея, почему это делает это или как я могу это исправить?
Спасибо..
Ответы
Ответ 1
Вы случайно используете $form- > bindRequest() в действии, который вызывает ошибку CSRF? У меня была эта проблема. Вы не должны связывать запрос новой формы. Если вы отправляете форму в одно и то же действие, завершите bindRequest в условном выражении, который проверяет, является ли метод POST:
if ($this->getRequest()->getMethod() == 'POST') {
$form->bindRequest($this->getRequest());
if ($form->isValid()) {
...
}
}
Ответ 2
Нет проблем с использованием {{ form_widget(form) }}
для создания вашей настраиваемой формы.
Все, что вам нужно сделать, это добавить _token
следующим образом:
{{ form_widget(form._token) }}
Ответ 3
Эта ошибка застала меня сумасшедшие дни!
Спасибо, кришна!
Если в шаблоне формы вы не хотите использовать поведение формы по умолчанию {{ form_widget(form) }}
, вы ДОЛЖНЫ положить {{ form_rest(form) }}
Надеюсь, это может помочь кому угодно!