2016-10-14 3 views
1

У меня есть приложение Laravel, и происходит что-то странное, связанное с переменными сеанса. У меня есть метод в контроллере, который проверяет некоторые входы и в зависимости от некоторых условий, которые он решает, продолжает или просто возвращается обратно (и прямо здесь, где моя проблема), когда я делаю return redirect()->back() Я хочу, чтобы я отправил переменную, которая является Json, поэтому кратко я это:Переменная сеанса не отправляется в Laravel 5

$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

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

ответ

0

Я также столкнулся с этой проблемой в проекте некоторое время назад с Laravel 5.2. Я не знаю, если это ошибка или она исправлена, но я обернулся, не используя redirect()->back(). Я думаю, это может быть связано с механизмом кэширования браузера. Мне было бы интересно, если вы в конечном итоге найдете причину.

+0

да, это в Laravel 5.2 –

0

Я думаю, вам нужно использовать $request->session()->put('key', 'value');, прежде чем начать редирект

прочитайте документацию на HTTP Session

+0

да, я уже сделал это, но это было то же самое –

+0

вы могли бы сделать что-то вроде 'if (isset ($ request-> session() -> get ('key'))) {}' – darham

+0

да, я написал его сразу после put '$ request-> session() -> put ('key', 'value');' и он существует, но тогда в представлении он больше не существует –

1

работает свой для меня, когда я тестировал. Возможно, ваш сеанс не хранит данные. Проверьте, работает ли ваша сессия или нет. Мой проверенный выход

@if (Session::has('msg')) 
     {{ session('msg') }} 
    @endif 

enter image description here

+0

да, просто проверка, вероятно, связана с тем, что я использую сетевое промежуточное программное обеспечение –

Смежные вопросы