【问题标题】:Flash Session is not working in Laravel 5.2.39Flash 会话在 Laravel 5.2.39 中不起作用
【发布时间】:2016-07-01 03:45:38
【问题描述】:

我正在使用下面的代码从控制器重定向到路由,但它不起作用。视图无法从会话中获取值。

游戏控制器

public function index()
{
    return view('game.index');
}

public function sync(){
    return redirect('/game')->with('status','[SUCCESS]');
}

查看

{{ session('status') }}
        @if(session('status'))
            asdasd
            @if(session('status') === '[SUCCESS]')
                <div class="row">
                    <div class="col-lg-12">
                        <div class="alert alert-success">Synced successfully!</div>
                    </div>
                </div>
            @elseif(session('status') === '[FAILED]')
                <div class="row">
                    <div class="col-lg-12">
                        <div class="alert alert-danger">Sync failed!</div>
                    </div>
                </div>
            @endif
        @endif

我已经运行php artisan route:list,结果如下所示

Screenshot

这是我的 route.php

Route::get('/', function () {
    return redirect('/home');
});
Route::get('/home', 'HomeController@index');
Route::get('/game', 'GameController@index');
Route::get('/game/sync', 'GameController@sync');

编辑

试图运行这条路线

Route::get('/test', function () {
    Session::put('status', 'Just a test');
    dd(Session::all());
});

结果

array:4 [▼
  "_token" => "9ZvL7FTzFt05rYXPviqhizohfFC6KWGqwMJVgYid"
  "_previous" => array:1 [▶]
  "flash" => array:2 [▶]
  "status" => "Just a test"
]

【问题讨论】:

  • 这是您的整个route.php 文件吗?考虑到您使用的 Laravel 版本,如果您使用 web 中间件包装您的路由,就会出现这个问题。从您的路线截图中,我假设您没有使用它。
  • 我把路由放在 web 中间件之外,因为我在某处读到 5.2 已经默认包含 web 中间件。 @TiagoRL
  • 没错。 Laravel 5.2.29 及之后的版本已经包含了这个中间件。您的代码看起来正确。 GameController@index 返回什么?像这样的视图:return view('myView'); 还是返回另一个 redirect()?你贴的控制器代码,是来自GameController还是HomeController,什么路由?
  • @TiagoRL 查看完整代码的编辑问题
  • 重定向页面时发生了什么?您收到错误或只是在视图中您无法从会话中获取“状态”字段?

标签: php laravel homestead


【解决方案1】:

根据您发布的代码,我创建了一个具有相同版本 5.2.39 的新 Laravel 项目。

这是完整的工作代码。

php 工匠路线:列表

+--------+----------+-----------+------+-------------------------------------------+------------+
| Domain | Method   | URI       | Name | Action                                    | Middleware |
+--------+----------+-----------+------+-------------------------------------------+------------+
|        | GET|HEAD | /         |      | Closure                                   | web        |
|        | GET|HEAD | game      |      | App\Http\Controllers\GameController@index | web        |
|        | GET|HEAD | game/sync |      | App\Http\Controllers\GameController@sync  | web        |
|        | GET|HEAD | home      |      | App\Http\Controllers\HomeController@index | web        |
+--------+----------+-----------+------+-------------------------------------------+------------+

GameController.php

// GameController.php
<?php
namespace App\Http\Controllers;

class GameController extends Controller {

    public function index()
    {
        return view('game.index');
    }

    public function sync() {
        return redirect('/game')->with('status','[SUCCESS]');
    }
}

资源/视图/游戏/index.blade.php

    {{ session('status') }}
    @if(session('status'))
        asdasd
        @if(session('status') === '[SUCCESS]')
            <div class="row">
                <div class="col-lg-12">
                    <div class="alert alert-success">Synced successfully!</div>
                </div>
            </div>
        @elseif(session('status') === '[FAILED]')
            <div class="row">
                <div class="col-lg-12">
                    <div class="alert alert-danger">Sync failed!</div>
                </div>
            </div>
        @endif
    @endif

然后,我在浏览器中转到/game/sync

输出:

[SUCCESS] asdasd
Synced successfully!

【讨论】:

  • 我在环境中使用 laravel/homestead。你在用什么?
  • 同一个环境。
  • 我想我会尝试重新安装我的环境并再试一次。我稍后会在这里更新结果
  • 我重新安装了,现在一切正常。好像我的环境有问题。感谢您的帮助!
  • 抱歉,我无法提供更多帮助。但很高兴它最终成功了。
【解决方案2】:

显然我的环境设置有问题。所以我从头开始重新安装所有东西,现在它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-03
    • 2022-07-08
    • 2016-11-27
    • 1970-01-01
    • 2014-09-14
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多