Php 如何在自定义命令中设置cookie并在中间件Laravel中获取它

Php 如何在自定义命令中设置cookie并在中间件Laravel中获取它,php,laravel-5,Php,Laravel 5,我正在寻找在控制台自定义命令中设置cookie并在Laravel(5.2版)的中间件中获取cookie的方法。这就是我正在尝试的 在自定义命令中 Cookie::queue('login', 'true', 1); $cookies = array('login' => true); 在中间件中 Cookie::get('login') // unable to get here set cookie 通过自定义命令在内部调用路由 $req = Request::create('/my

我正在寻找在控制台自定义命令中设置cookie并在Laravel(5.2版)的中间件中获取cookie的方法。这就是我正在尝试的

在自定义命令中

Cookie::queue('login', 'true', 1);
$cookies = array('login' => true);
在中间件中

Cookie::get('login') // unable to get here set cookie
通过自定义命令在内部调用路由

$req = Request::create('/my/url', 'POST', $params, $cookies);
$res = app()->handle($req);
$responseBody = $res->getContent();
参考文献


非常感谢您的帮助。

我认为您已经创建了一个
中间件
,假设
CookieMidtlware
。所以在
CookieMiddlware
中有一个句柄方法。尝试
dd($request)

例如:

public function handle($request, Closure $next)
{
    dd($request);
    //return $next($request);
}
注册中间件,然后将其应用于路由。点击该路径,您将看到完整的请求数据。在那里你可以找到饼干。打开它,玩它

如果您已正确设置cookies,则可以从中间件中的请求获取cookies

+cookies: ParameterBag {#45 ▼
#parameters: array:3 [▼
  "laravel_session" => "FDyl3cnxEy3VDIiivxLQmDDbyZuJggeU8"
  "XSRF-TOKEN" => "7TQrk9QZKrpPPrgoaAXNOIZlThrePlesjQJ"
  "etc" => "2zbP5hem9RcvBcQwBz8UewwZxWQxQAcA4"
 ]
}
您可以像
$request->cookie('name')一样访问它
这样检查

$cookies = array('login' => "akhtar");
$ar = json_encode($cookies);
Cookie::queue('test',$ar,100);
dd(json_decode(Cookie::get('test')));

$cookies=array('testing'=>'sonam');在带有null+cookies的中间件中获取唯一密钥:Symfony\Component\HttpFoundation\ParameterBag{1130}参数:数组:1[“testing”=>null]}公共静态函数create($uri,$method='GET',$parameters=array(),$cookies=array(),$files=array(),$server=array(),$content=null),如上所述,它必须是数组的类型。这就是为什么在JSON编码时出现致命错误的原因。我知道,但当您设置cookie时,请将其设置为
JSON\u encode
,并在访问make it
JSON\u decode
。无更改,仅获取空值。我这样做只是为了测试,它可以工作。请参阅更新的答案