#php #laravel #laravel-5 #session-variables
#php #laravel #laravel-5 #переменные сеанса
Вопрос:
У меня есть приложение Laravel, и происходит что-то странное, связанное с переменными сеанса. У меня есть метод в контроллере, который проверяет некоторые входные данные и в зависимости от некоторых условий решает, продолжить или просто вернуться обратно (и прямо здесь, где моя проблема), когда я делаю return redirect()->back()
, я хочу, чтобы отправить переменную, которая является Json, поэтому вкратце у меня есть это:
$msg=json_encode([
'status' => 'failed',
'field'=>'mail'
]);
return redirect()->back()->with('msg',$msg);
Итак, он перенаправляет очень хорошо, но затем в представлении, которое я имею:
@if ( Session::has('msg') )
//come stuffs
@endif
Но, похоже msg
, переменная не передается. Согласно документации Laravel при использовании redirect back
переменные доступны через Session
Комментарии:
1. Посмотрите свой журнал доступа. Это мигает данными только для следующего запроса, и если любая страница, на которую вы перенаправляете обратно, также перенаправляется куда-то, вы в конечном итоге потеряете эти данные.
Ответ №1:
Это работает для меня, когда я тестировал. Возможно, ваш сеанс не хранит данные. Пожалуйста, проверьте, работает ли ваш сеанс или нет. Мой протестированный результат
@if ( Session::has('msg') )
{{ session('msg') }}
@endif
Комментарии:
1. да, просто проверка, вероятно, заключается в том, что проблема заключается в том, что я использую веб-промежуточное программное обеспечение
Ответ №2:
Я также столкнулся с этой проблемой в проекте некоторое время назад с Laravel 5.2. Я не знаю, ошибка ли это или она была исправлена, но в итоге я обошел ее, не используя redirect()->back()
. Я думаю, это может быть связано с механизмом кэширования браузера. Мне было бы интересно, если вы в конечном итоге найдете причину.
Ответ №3:
Я думаю, вам нужно использовать $request->session()->put('key', 'value');
, прежде чем инициировать перенаправление
прочитайте документацию на сеансе HTTP
Комментарии:
1. не могли бы вы сделать что-то вроде
if (isset( $request->session()->get( 'key' ))) {}
2. да, я написал это сразу после put
$request->session()->put('key', 'value');
, и оно существует, но затем в представлении оно больше не существует3. вы должны поместить оператор if в свое представление
4. уххх ок,
undefined variable $request
5. но я попробовал
@if (! Session::has('message') )
, и он вошел, поэтому он не сохраняет переменную сеанса