Итак, мой контроллер выглядит следующим образом:
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.
Что я делаю неправильно? Буду очень признателен за любую возможную помощь!
В принципе проблема в вашем коде не в том, что класс 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
в методе конструктора.
Я думаю, что это будет полезно для вас.
В вашем контроллере вы вызываете метод getID, а в методе getID вы используете cookiejar, но cookiejar еще не был инициализирован.
Если вы переключаете вызовы метода, он должен работать
public function __construct(CookieJar $cookieJar)
{
$this->cookieJar = $cookieJar;
$this->id = $this->getID();
}