所以我的控制器如下所示:
use Illuminate\Http\Request;
use Illuminate\Cookie\CookieJar;
use Cookie;
class MyController extends Controller {
public function __construct(CookieJar $cookieJar)
{
$this->id = $this->getID();
$this->cookieJar = $cookieJar;
}
private function getID()
{
if (!isset($_COOKIE["ID"])){
$id = 20;
$this->cookieJar->queue('ID', $id, 60);
}
return $id;
}
但我一直收到错误
未定义的属性:App \ Http \ Controllers \ MyController :: $ cookieJar
在getID函数中。
我做错了什么?非常感谢任何可能的帮助!
答案 0 :(得分:0)
代码中的问题基本上不是cookieJar类。以下是控制器的正确代码:
use Illuminate\Http\Request;
use Illuminate\Cookie\CookieJar;
use Cookie;
class MyController extends Controller {
protected $id;
protected $cookieJar;
public function __construct(CookieJar $cookieJar)
{
$this->cookieJar = $cookieJar;
$this->id = $this->getID();
}
private function getID()
{
if (!isset($_COOKIE["ID"])){
$id = 20;
$this->cookieJar->queue('ID', $id, 60);
}
return $id;
}
当我们在控制器的所有功能中使用任何属性来携带一些值时,我们必须定义这些属性。请检查我的代码。
还有一件事,属性的顺序在构造函数方法中也是不正确的。因为您使用的是使用getID()
属性的函数$cookieJar
。因此,您必须首先定义该属性,然后在构造函数方法中使用第二个属性$id
。
我认为这会对你有所帮助。
答案 1 :(得分:0)
在您的控制器中,您调用getID方法,并在getID方法中使用您的cookiejar,但cookiejar尚未初始化。
如果你切换方法调用,它应该工作
public function __construct(CookieJar $cookieJar)
{
$this->cookieJar = $cookieJar;
$this->id = $this->getID();
}