Laravel 5.2 - Session::get 不工作
Laravel 5.2 - Session::get not working
我想为用户显示 '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!');
});
});
web
中间件组包含会话所需的所有中间件。您的 alert
路由在中间件组中,因此它可以正确设置会话,但是您的 home
路由也需要在 web
中间件组中才能读取会话。
您可能应该将 home
路由放在 routes.php 文件中的 web
中间件中以使其工作
明确插入会话闪存数据..
Route::get('/alert',function () {
$request->session()->flash('message', 'Task was successful!');
return redirect()->route('home');
});
如果你这样写:
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');
});
也是一次性使用,但需要开启session。
如果你想永久地在会话中发送消息,你可以写:
Route::get('/alert',function () {
$request->session()->put('message', 'This is a Test Message!');
return redirect()->route('home');
});
希望这能帮助其他人更清楚地理解。
我想为用户显示 '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!');
});
});
web
中间件组包含会话所需的所有中间件。您的 alert
路由在中间件组中,因此它可以正确设置会话,但是您的 home
路由也需要在 web
中间件组中才能读取会话。
您可能应该将 home
路由放在 routes.php 文件中的 web
中间件中以使其工作
明确插入会话闪存数据..
Route::get('/alert',function () {
$request->session()->flash('message', 'Task was successful!');
return redirect()->route('home');
});
如果你这样写:
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');
});
也是一次性使用,但需要开启session。 如果你想永久地在会话中发送消息,你可以写:
Route::get('/alert',function () {
$request->session()->put('message', 'This is a Test Message!');
return redirect()->route('home');
});
希望这能帮助其他人更清楚地理解。