Доступ к функции-члену в YTable из XController

Это общий вопрос о CakePHP 3. У меня есть значительный опыт ООП, но я новичок в PHP и застрял на использовании Cake для проекта. Я думаю, это вращается вокруг соглашений.

Допустим, у меня есть модельный объект Apple с соответствующим классом ApplesTable. В классе ApplesTable я реализовал метод для поиска чего-либо в базе данных. Если бы я был в ApplesController, я так понимаю, что мог бы написать: $this->Apples->method() и все было бы нормально.

Однако, если я хочу получить доступ к этому методу, скажем, в OrangesController, просто набрав одно и то же, я выдам фатальную ошибку: «Вызов метода функции-члена () для логического значения». Судя по тому, что я исследовал, это может быть связано с тем, что он не может загрузить элемент модели, поэтому вызов метода, написанный выше, будет просто давать false, создавая ошибку.

Опять же, я новичок в PHP и совершенно новичок в Cake, поэтому некоторые соглашения с фреймворком все еще немного туманны. Надеюсь, кто-то может помочь прояснить это - спасибо!


person Mason Dixon Line    schedule 14.12.2015    source источник


Ответы (1)


Попробуйте loadModel(), когда вам нужно использовать таблицу моделей /коллекция, которая не является сборкой контроллера по умолчанию.

// ApplesController
loadModel("Oranges");

$this->Oranges->makeJuice();
$orange_sugar = $this->Oranges->sugar;

или если ваши модели связаны,

// ApplesController
$this->Apples->Oranges->makeJuice();
$orange_sugar = $this->Apples->Oranges->sugar;
person Tsumannai    schedule 15.12.2015
comment
Аааа ладно, это имеет смысл, потому что только модель Apple загружается в контроллер в соответствии с соглашениями фреймворка Cake. Я думаю, что создание ассоциации, вероятно, является лучшим вариантом в моем случае, поскольку в принципе это имеет смысл, исходя из моего сценария. Спасибо! - person Mason Dixon Line; 15.12.2015