【问题标题】:Laravel 4 - Redirect with flash message not workingLaravel 4 - 使用 Flash 消息重定向不起作用
【发布时间】:2014-04-18 17:33:32
【问题描述】:

在我的 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)

发生了什么?这似乎是相当简单的代码......

【问题讨论】:

  • 只要在你的视图中做一个var_dump(Session::all());,你就会注意到已经有一个名为flash的键。这是一个具有oldnew 索引的数组。因此,为您的 Flash 消息使用不同的键/名称。
  • 您是否尝试使用其他名称代替 flash
  • 谢谢各位,原来是这样!

标签: php laravel laravel-4


【解决方案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' => 'PagesController@home'
]);

Route::resource('tasks', 'TasksController');

});

在那之后使用。

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

你需要访问会话的地方

【讨论】:

    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 2017-05-14
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多