我试图在构造函数中设置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类是否在构造函数中被禁用?
答案 0 :(得分:2)
我猜这与using sessions in controller constructor的5.3变化有关。以下是Taylor Otwell的解释:
在构造函数中使用session或auth是非常糟糕的,因为还没有请求发生,并且session和auth固有地绑定到HTTP请求。您应该使用实际的控制器方法接收此请求,您可以使用多个不同的请求多次调用此方法。通过强制您的控制器解析构造函数中的会话或身份验证信息,您现在强制整个控制器忽略实际的传入请求,这可能会在测试时导致严重问题等。