Laravel 4 -重定向与flash消息不工作


Laravel 4 - Redirect with flash message not working

在我的Laravel 4项目中,我试图在重定向时设置flash消息,如下所示:

return Redirect::route('main')->with('flash', 'Message here.');

(我看了下面的内容:Laravel 4 - Redirect::route with parameters)。

重定向正确发生。在我的"主"视图中,我有这个代码来显示flash消息:

@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)

发生了什么事?

当你用data重定向时,你保存的数据将被'闪现'到会话中(这意味着它只会在下一次请求时可用,参见:http://laravel.com/docs/session#flash-data)。

我会小心使用'flash'作为闪存数据键,因为Laravel将其闪存数据存储在已经具有'flash'名称的键中。试着改个名字吧。您可能会对Laravel的Session::get感到困惑,因为它应该尝试从哪里加载数据。

在routes.php文件中尝试在

Route::group(['middleware' => ['web']], function () {
Route::get('/', [
    'as' => 'home',
    'uses' => 'PagesController@home'
]);
Route::resource('tasks', 'TasksController');

});

之后使用。

@if (Session::has('flash'))
    <div class="flash alert">
        <p>{{ Session::get('flash') }}</p>
    </div>
@endif

需要访问会话

的地方