无法在构造函数中获取cookie

时间:2016-11-18 11:32:14

标签: php laravel cookies laravel-5

我试图在构造函数中设置cookie变量,但是当我在构造中执行Cookie::get('cookie_name');时,它设置了一个哈希变量,如下所示。

eyJpdiI6ImRnRWF3TEa82Wm9cL3lRbng0OW1Wc1FBPT0iLCJ2YWx1ZSI6IlI4TkgwZGd6Mn

以下是我尝试的代码。

class CookieController extends Controller
{
    public $cookie;
    public function __construct(Request $request){
        $this->cookie = Cookie::get('cookie_name');
    }

    public function viewCookie(Request $request){
    return $this->cookie;
    }

如果我在viewCookie函数中调用Cookie::get('cookie_name');,那么它会显示正确的值。 Cookie类是否在构造函数中被禁用?

1 个答案:

答案 0 :(得分:2)

我猜这与using sessions in controller constructor的5.3变化有关。以下是Taylor Otwell的解释:

  

在构造函数中使用session或auth是非常糟糕的,因为还没有请求发生,并且session和auth固有地绑定到HTTP请求。您应该使用实际的控制器方法接收此请求,您可以使用多个不同的请求多次调用此方法。通过强制您的控制器解析构造函数中的会话或身份验证信息,您现在强制整个控制器忽略实际的传入请求,这可能会在测试时导致严重问题等。