[英]Laravel 5.2 Redirect with Flash Data
我刚刚从 4.2 升级到 Laravel 5.2 来尝试框架的新功能。 但是我在设置要在其他控制器/路由上发送的flash session
数据时遇到了麻烦。
这是我的简单代码:
控制器
<?php namespace App\Http\Controllers;
use Session;
use Illuminate\Http\Request;
class ctest extends Controller {
public function page_a() {
return redirect('page_b')->with('verified', 'Go to page B');
}
public function page_b(Request $request) {
dd(array(
session()->has('verified'), // Option a
$request->session()->get('verified') // Option b
));
}
}
路线
// Old code
// Route::get('/page_a', 'ctest@page_a');
// Route::get('/page_b', 'ctest@page_b');
// As pointed out by @rishal at the comment,
// I tried using this group but I can't still get
// the flash data.
Route::group(['middleware' => ['web']], function () {
Route::get('/page_a', 'ctest@page_a');
Route::get('/page_b', 'ctest@page_b');
});
page_b 上的结果
array: [
0 => false
1 => null
]
我无法弄清楚这有什么问题。 每当我被重定向到 page_b 时,会话只包含_token
,不包括我已经在 page_a 上设置的verified
Flash 会话数据。
PS:我使用数据库来存储会话而不是文件
首先,您需要在重定向页面后对路由进行分组以获取会话变量
Route::group(['middleware' => ['web']], function () {
Route::get('/page_a', 'ctest@page_a');
Route::get('/page_b', 'ctest@page_b');
});
接下来,使用Request检索会话
public function page_b(Request $request) {
if ($request->session()->has('verified'))
echo $request->session()->get('key');
}
在你的 page_a 这一行
return redirect('page_b')->with('verified', 'Go to page B');
不创建会话变量,它创建$verified
的值为“转到页面 B”。 相反,您可以使用创建会话变量
$request->session()->put('key', 'value');
尝试用 'middlewareGroups' 替换 'middleware',如下所示:
Route::group(['middlewareGroups' => ['web']], function () {
Route::get('/page_a', 'ctest@page_a');
Route::get('/page_b', 'ctest@page_b');
});
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.