【问题标题】:Laravel return back with flash dataLaravel 返回闪存数据
【发布时间】:2016-01-15 20:59:10
【问题描述】:

我有一个联系表。提交后,POST 请求会发送到处理联系表单的控制器(检查请求并通过电子邮件发送数据)。在控制器的底部我有这个:

return back()->with('flash-message', 'Message!');

在视图中,我尝试用

回显消息
{{ session('flash-message') }}

这似乎不起作用。该消息不在会话中。 有什么问题? 我在用着: Laravel 5.2.7 版

【问题讨论】:

  • 您在哪里重定向以应用“网络”中间件?

标签: php laravel-5 laravel-5.2


【解决方案1】:

请用这种方式取 Session 变量..

return  redirect()->back()->with('flash-message','message');  

在视图中..

 {{Session::get('flash-message')}}

【讨论】:

  • 不,这不是问题。我可以通过这种方式检索会话变量。会话(“闪信”)。当我测试它时它会起作用。
  • 这也行不通。它和我的代码一样。问题是闪存数据在重定向后丢失。谁能解决这个问题?
【解决方案2】:

我想通了。它与 Laravel 5.2 更新有关。负责使所有视图都可以使用闪存数据的中间件不再在普通路由中使用。它从全局中间件转移到了网络中间件组。这篇文章解释了这个问题以及如何解决它。

Laravel 5.2 $errors not appearing in Blade

这篇文章解释了两种解决方法:

  1. 在您的 kernel.php 文件中,您可以将 middleware \Illuminate\View\Middleware\ShareErrorsFromSession::class 移回 protected $middleware 属性。

  2. 您可以将所有 Web 路由封装在 Web 中间件组中(见下文)。还要将处理表单的路由放在这里:

Route::group(['middleware' => 'web'], function() { // Place all your web routes here... });

【讨论】:

    【解决方案3】:

    你可以这样做。在控制器中:

    Session::flash('message','Empty input not accepted');
    return back();
    

    在视图文件中使用这个 Session 你可以像上面提到的那样做:

    {{ \Session::get($message) }}
    

    希望对你有所帮助....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-17
      • 2018-06-08
      • 1970-01-01
      • 2017-03-18
      • 2016-09-16
      • 1970-01-01
      • 2018-02-18
      • 2020-10-21
      相关资源
      最近更新 更多