繁体   English   中英

Laravel 5.2 使用 Flash 数据重定向

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM