【问题标题】:Laravel 5.2 - Session::get not workingLaravel 5.2 - Session::get 不工作
【发布时间】:2016-01-16 09:59:07
【问题描述】:

我想为用户显示“falsh-message”,我开始使用以下代码在routes.php 中重定向他:

Route::get('/alert',function () {
    return redirect()->route('home')->with('message', 'This is a Test Message!');
});

在我包含在主页视图中的alerts.blade.php 中,我想阅读此消息:

Route::group(['middleware' => ['web']], function () {
  Route::get('/alert',function () {
        return redirect()->route('home')->with('message', 'This is a Test Message!');
    });
});

我的会话将设置在storage\framework\sessions 下,代码如下:

a:5:{s:6:"_token";s:40:"8304u3fjR9EhvA88QMVGQnGcgdUcWoZj9LrHaDPh";s:7:"message";s:23:"This is a Test Message!";s:5:"flash";a:2:{s:3:"new";a:0:{}s:3:"old";a:1:{i:0;s:7:"message";}}s:9:"_previous";a:1:{s:3:"url";s:22:"http://localhost/alert";}s:9:"_sf2_meta";a:3:{s:1:"u";i:1452937821;s:1:"c";i:1452937821;s:1:"l";s:1:"0";}}

但问题是 Laravel 没有给我消息的输出,因为它是空的。所以也许有人可以帮助我。

routes.php

Route::group(['middleware' => ['web']], function () {
    Route::get('/', [
        'uses' => '\App\Http\Controllers\HomeController@index',
        'as' => 'home',
    ]);
    Route::get('/alert',function () {
        return redirect()->route('home')->with('message', 'This is a Test Message!');
    });
});

【问题讨论】:

  • 显示调用视图的方式以及尝试获取会话的方式?
  • 请出示App\Http\Controllers\HomeController@index 和任何适用的刀片文件。

标签: php laravel session laravel-5 laravel-5.2


【解决方案1】:

显式插入会话闪存数据..

Route::get('/alert',function () {
    $request->session()->flash('message', 'Task was successful!');
    return redirect()->route('home');
});

【讨论】:

    【解决方案2】:

    web 中间件组包含会话所需的所有中间件。您的 alert 路由在中间件组中,因此它可以正确设置会话,但是您的 home 路由也需要在 web 中间件组中才能读取会话。

    【讨论】:

      【解决方案3】:

      您可能应该将您的 home 路由放在您的 routes.php 文件中的 web 中间件中以使其工作

      【讨论】:

      • 所以请包含您的路线文件
      • 添加了 routes.php
      • 确保在 bootstrap/routes.php 中没有缓存路由文件,如果有,请将其删除
      • bootstrap/中没有routes.php
      • @DanielO。您是否将 message 变量传递给 Blade 模板?
      【解决方案4】:

      如果你这样写:

      Route::get('/alert',function () {
          return redirect()->route('home')->with('message', 'This is a Test Message!');
      });
      

      你会在视图中找到一个名为 $message 的变量;试试看echo $message;

      一次性使用;你也可以写:

      Route::get('/alert',function () {
          $request->session()->flash('message', 'This is a Test Message!');
          return redirect()->route('home');
      });
      

      它也是一次性使用,但您需要启用会话。 如果您想永久保留会话中的消息,您可以写:

      Route::get('/alert',function () {
          $request->session()->put('message', 'This is a Test Message!');
          return redirect()->route('home');
      });
      

      希望这将有助于其他人更清楚地理解。

      【讨论】:

        猜你喜欢
        • 2016-07-15
        • 1970-01-01
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-17
        • 2016-11-27
        • 2016-08-11
        相关资源
        最近更新 更多