如何从Laravel中的控制器将cookie作为中间件的参数传递?

时间:2018-08-01 04:28:40

标签: php laravel laravel-5.5

我是Laravel的初学者。我正试图从控制器这样的中间件传递参数:

if(isset($_COOKIE['name']))
    {   
        return $next($request->attributes->add(['name' => strval($_COOKIE['name'])]));
    }

但是,我收到此错误消息:

  

“类型错误:参数1传递给   Symfony \ Component \ HttpFoundation \ Response :: prepare()必须是   Symfony \ Component \ HttpFoundation \ Request的实例,给定null“

我试图在传递cookie值之前将其转换为字符串,但是它不起作用。如何通过传递cookie作为参数?我不想使用$_COOKIE['name']获取cookie的值。我的Laravel版本是5.5。谢谢!

1 个答案:

答案 0 :(得分:1)

尝试将cookie值与请求输入合并:

    return signedXml.CheckSignature(cert);
    //^^^^ This will not work. 
    //CheckSignature(X509Certificate2 certificate, bool verifySignatureOnly) 
    //needs a boolean flag as well

请记住,这将覆盖任何名为$merged = $request->merge(['name' => $request->cookie('name')]); return $next($merged); 的输入值,因此请使用唯一键。

但是,这并不是真正必要的,因为请求可以在其整个生命周期内访问cookie:

name