【发布时间】: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,结果如下所示
这是我的 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 查看完整代码的编辑问题
-
重定向页面时发生了什么?您收到错误或只是在视图中您无法从会话中获取“状态”字段?