【问题标题】:Undefined property: App\Http\Controllers\MyController::$cookieJar未定义的属性:App\Http\Controllers\MyController::$cookieJar
【发布时间】:2016-07-13 07:09:16
【问题描述】:

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

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

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

【问题讨论】:

  • 使用而不是使用 Illuminate\Cookie\CookieJar;使用 CookieJar
  • @GM.Akbar 然后我得到“类 CookieJar 不存在”
  • 你的 Laravel 版本是多少?
  • 在 _construct 之前初始化 2 个变量 $id = 0$cookieJar = null,应该这样做。
  • 我认为您在构造函数中声明错误“$this”表示来自您的控制器,但您没有 ID var 或函数。

标签: php laravel cookies cookiejar


【解决方案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

我认为这对你会有帮助。

【讨论】:

    【解决方案2】:

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

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

     public function __construct(CookieJar $cookieJar)
     {
        $this->cookieJar = $cookieJar;
        $this->id = $this->getID();
     }
    

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 2021-02-18
      • 2021-01-30
      • 1970-01-01
      • 2017-06-30
      • 2018-04-06
      • 2021-07-08
      • 2019-05-13
      • 2022-11-15
      相关资源
      最近更新 更多