Ассоциации моделей cakePHP потеряны после импорта модели в контроллер - PullRequest
2 голосов
/ 17 ноября 2011

Из-за желания клиента иметь URL-адреса, которые не соответствуют логике Cake, я решил использовать pages_controller.php, скопированный из cake / libs, для организации моего приложения. Большая часть функциональности сайта происходит от одного URL-адреса, совершающего вызовы с помощью ajax на разные контроллеры, поэтому я выбрал Pages в качестве домашней базы.

У страниц нет модели, но мне все еще нужно получить доступ к некоторым соответствующим моделям, поэтому я импортирую их.

Я перепробовал все три метода:

$this->loadModel('Inventories'); 
----
$Inventories =& ClassRegistry::init('Inventories'); 
----
App::import('Controller', 'Inventories');
$Inventories = new InventoriesController;

Кажется, что модель инвентаря нормально загружается с каждым, но когда я нахожу некоторые записи:

$(...)->find("all", array(
    'conditions' => array('id' => '1'),
    'recursive'=>2)
);

Я получаю результаты только в том случае, если для рекурсии установлено значение -1 или если не было связанных моделей. Это происходит независимо от того, что я установил рекурсивно. Когда я загружаю модель в другой контроллер, я получаю соответствующий рекурсивный ответ.

Есть идеи, как получить полный доступ к модели из pages_controller.php?

1 Ответ

0 голосов
/ 17 ноября 2011

Грязное, но мгновенное решение состоит в том, чтобы просто заполнить массив $uses в вашем контроллере:

var $uses = array('Inventories', 'User'); // or whatever models need to be loaded

Это считается плохой практикой и может быстро выйти из-под контроля.В основном удобно для быстрого тестирования.

Вы можете поместить функциональность в контроллеры с соответствующим названием и затем направить нужные URL вашего клиента на соответствующий контроллер / действие:

http://book.cakephp.org/view/945/Routes-Configuration

Малоизвестный метод контроллера (его нет в кулинарной книге, только API) под названием setAction() может быть решением для вас. См .:

http://api13.cakephp.org/class/controller#method-ControllersetAction

также в Cake 2.0

http://api20.cakephp.org/class/controller#method-ControllersetAction

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...