Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.2使用闪存数据重定向_Php_Laravel_Session_Laravel 5.2 - Fatal编程技术网

Php Laravel 5.2使用闪存数据重定向

Php Laravel 5.2使用闪存数据重定向,php,laravel,session,laravel-5.2,Php,Laravel,Session,Laravel 5.2,我刚刚从4.2升级到Laravel5.2,以尝试该框架的新功能。但我在设置要在其他控制器/路由上发送的闪存会话数据时遇到问题 以下是我的简单代码: 控制器 <?php namespace App\Http\Controllers; use Session; use Illuminate\Http\Request; class ctest extends Controller { public function page_a() { return redirec

我刚刚从4.2升级到Laravel5.2,以尝试该框架的新功能。但我在设置要在其他控制器/路由上发送的
闪存会话
数据时遇到问题

以下是我的简单代码:

控制器

<?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
        ));
    }
}
第b页的结果

array: [
  0 => false
  1 => null
]
我不知道这是怎么回事。每当我被重定向到页面_b时,会话只包含
\u令牌
,不包括我已经在页面_a上设置的
已验证的
闪存会话数据


PS:我正在使用数据库存储会话而不是文件

首先,在重定向页面后,您需要对路由进行分组以获取会话变量

// 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');
});
Route::group(['middleware' => ['web']], function () {
    Route::get('/page_a', 'ctest@page_a');
    Route::get('/page_b', 'ctest@page_b');
});
接下来,使用请求检索会话

public function page_b(Request $request) {
     if ($request->session()->has('verified'))
         echo $request->session()->get('key');
}
在您的页面中,请单击此行

return redirect('page_b')->with('verified', 'Go to page B');
不创建会话变量,它创建值为“转到B页”的
$verified
。相反,您可以使用

$request->session()->put('key', 'value');

尝试将“中间件”替换为“中间件组”,如下所示:

Route::group(['middlewareGroups' => ['web']], function () {
    Route::get('/page_a', 'ctest@page_a');
    Route::get('/page_b', 'ctest@page_b');
});

希望这有帮助

您是否尝试对路线进行分组route::groupnot。我需要这样做吗?为什么?我很抱歉。我是5.2的新手,我试过bro,但根据您使用请求检索会话的laravel文档仍然相同,例如$request->session()->get('key');对不起,我忘了在我的问题中包括我使用数据库来存储会话而不是文件。它会影响行为吗?什么意思会影响行为?它起作用了吗?