未定义的属性:App \ Http \ Controllers \ MyController :: $ cookieJar

时间:2016-07-13 07:09:16

标签: php laravel cookies cookiejar

所以我的控制器如下所示:

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函数中。

我做错了什么?非常感谢任何可能的帮助!

2 个答案:

答案 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();
 }