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

Где вам нужно получить доступ к сеансу