2

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

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

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

4

2 回答 2

1

基本上你的代码中的问题不是 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在构造函数方法中使用第二个属性。

我认为这对你会有帮助。

于 2016-07-13T09:49:37.637 回答
0

在您的控制器中,您调用 getID 方法,在 getID 方法中,您使用您的 cookiejar,但 cookiejar 尚未初始化。

如果您切换方法调用,它应该可以工作

 public function __construct(CookieJar $cookieJar)
 {
    $this->cookieJar = $cookieJar;
    $this->id = $this->getID();
 }
于 2016-07-13T13:23:16.593 回答