s37dap42x
@s37dap42x
Web Developer

Laravel: пропадает значение _token после отправки формы. Как исправить?

Добрый день, уважаемые девелоперы. Ни за что не стал бы писать вопрос. Тем более, что он мне кажется глупым. Но уже перерыл весь Тостер и весь интернет.

Фреймворк - laravel

Ситуация такая:

1. Есть форма по адресу post/add. В ней генерится скрытый _token (C помощью фасада Form:: или с помощью функции csrf_field() - не важно) Выглядит вот так:

<input name="_token" type="hidden" value="здесь токен">


2. Форма отправляется на сервер (не аякс, простой PUT запрос)

3. Данные сохраняются в бд и происходит редирект на ту же страницу. Например так:

return redirect('post/add');

4. Все происходит успешно. Но уже после перехода на страницу форма генерится без значения поля _token. Вот так:

<input name="_token" type="hidden">

Т. е. второй раз эту форму уже не отправить. Перед этим нужно на страницу зайти заново методом GET.

Вопрос: что я делаю не так? Как это исправить?
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
s37dap42x
@s37dap42x Автор вопроса
Web Developer
Ага, методом тыка было обнаружено следующее:

перед тем, как сделать редирект в обработчике

return redirect('post/add');

Есть такой код:

Session::flash('success', 'Тра-та-та');

Так вот, если его закомментировать, то все начинает работать. Получается, что это функция как-то перекрывает что-ли токен?

Обновление

Не могу удалить собственный же вопрос, потому что сам же на него ответил.

Задачка решилась. Видимо, работать 18 часов подряд вредно. Нужно пойти поспать. Оказалось, что был "смыв" всех значение перед выводом формы, поэтому токен и не выводился.

Session::flush();

Убрал этот кусок кода и все заработало!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы