Подтвердить что ты не робот

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 не... Любая идея, почему это делает это или как я могу это исправить?

Спасибо..

4b9b3361

Ответ 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) }} Надеюсь, это может помочь кому угодно!