Старая тема, но я собираюсь вмешаться, потому что я считаю, что ответы являются неполными и не хватает "почему". CakePHP имеет три способа загрузки моделей. Хотя только два метода работают вне контроллера, я упомяну все три. Я не уверен в доступности версии, но это основной материал, поэтому я верю, что они будут работать.
App::import()
только находит и require()
s файл, и вам потребуется создать экземпляр класса для его использования. Вы можете указать import()
тип класса, имя и путь к файлу.
ClassRegistry::init()
загружает файл, добавляет экземпляр к карте объектов и возвращает экземпляр. Это лучший способ загрузки чего-либо, потому что он настраивает «Cake», как если бы вы загружали класс обычными средствами. Вы также можете установить псевдоним для имени класса, который я нашел полезным.
Controller::loadModel()
использует ClassRegistry::init()
, а также добавляет Модель в качестве свойства контроллера. Это также позволяет $persistModel
для кеширования модели при будущих запросах. Это работает только в контроллере, и, если это ваша ситуация, я бы использовал этот метод раньше других.