Laravel 4 - перенаправление с флэш-сообщением не работает
В моем проекте Laravel 4 я пытаюсь установить флеш-сообщение при перенаправлении, например:
return Redirect::route('main')->with('flash', 'Message here.');
(Я посмотрел на следующее: Laravel 4 - Redirect:: route с параметрами).
Перенаправление происходит правильно. В моем "главном" представлении у меня есть этот код для отображения флэш-сообщения:
@if (Session::has('flash'))
<div class="flash alert">
<p>{{ Session::get('flash') }}</p>
</div>
@endif
Но это не сработает: Session::get('flash')
возвращает массив, а не строку. Если я вставляю вызов var_dump(Session::get('flash'))
, я получаю этот вывод:
array (size=2)
'new' =>
array (size=0)
empty
'old' =>
array (size=1)
0 => string 'flash' (length=5)
Что происходит? Это похоже на довольно простой код...
Ответы
Ответ 1
При перенаправлении с данными сохраненные данные будут "свернуты" в сеанс (это означает, что он будет доступен только во время следующего запроса, см. http://laravel.com/docs/session#flash-data).
Я бы с осторожностью использовал 'flash'
как ключ данных флэш-памяти, поскольку Laravel сохраняет свои данные флэш-памяти в ключе, уже имеющем имя 'flash'
. Попробуйте изменить свое имя на что-то еще. Вы можете ввести в заблуждение Laravel Session::get
относительно того, где он должен пытаться загрузить данные.
Ответ 2
Внутри файла routes.php попытайтесь создать свои маршруты в
Route::group(['middleware' => ['web']], function () {
Route::get('/', [
'as' => 'home',
'uses' => '[email protected]'
]);
Route::resource('tasks', 'TasksController');
});
И после этого используйте.
@if (Session::has('flash'))
<div class="flash alert">
<p>{{ Session::get('flash') }}</p>
</div>
@endif
Где вам нужно получить доступ к сеансу