Неопределенное свойство: App \ Http \ Controllers \ MyController :: $ 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.

Что я делаю неправильно? Буду очень признателен за любую возможную помощь!

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 в методе конструктора.

Я думаю, что это будет полезно для вас.

0

Другие решения

В вашем контроллере вы вызываете метод getID, а в методе getID вы используете cookiejar, но cookiejar еще не был инициализирован.

Если вы переключаете вызовы метода, он должен работать

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