Отключить "функцию" автоматической модели Cakephp - PullRequest
2 голосов
/ 19 сентября 2008

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

Я создал плагин со всеми файлами, и все оказалось просто замечательно. Пока я не попытался использовать некоторые ассоциации и функции модели. Тогда торт утверждает, что созданной мною модели не существует. Я сузил кругозор, используя эту функцию автоматической модели вместо броска и ошибки ! Так что я понятия не имею, что не так!

Кто-нибудь знает, как отключить эту функцию автоматической модели? Это хорошая мысль, но я не могу найти, где я ошибся с моим плагином, и ошибка будет очень полезна!

Ответы [ 5 ]

3 голосов
/ 20 сентября 2008

Торт 1.2

Это хак, и это ужасно, потому что вам нужно редактировать файлы Core Cake, но я так и делаю: \ cake \ libs \ class_registry.php: строка 127ish

if (App::import($type, $plugin . $class)) {
    ${$class} =& new $class($options);
} elseif ($type === 'Model') {
    /* Print out whatever debug info we have then exit */
    pr($objects);
    die("unable to find class $type, $plugin$class");
    /* We don't want to base this on the app model */
    ${$class} =& new AppModel($options);
}

Торт 2

Коста рекомендует изменить $ строгий на true в функции init в строке 95 Cake\Utility\ClassRegistry.php

См. Cake Api Docs для init

ClassRegistry.php - функция инициализации

3 голосов
/ 19 сентября 2008

Всегда есть возможность создать файл модели и установить var $ useTable = false.
Если это не то, о чем вы просите, и модель и ее ассоциации действительно существуют, но Cake, похоже, не может их найти, вам придется тройной проверкой имен всех моделей и их имен классов как в фактической определение модели и определения ассоциаций.

AFAIK, вы не можете отключить автоматическое моделирование.

1 голос
/ 29 сентября 2008

Удалить все кэшированные файлы (все файлы в app / tmp, сохранить папки)

В большинстве случаев, когда кажется, что модели действуют неожиданным образом, часто они не включают в себя сделанные вами изменения, это потому, что этот торт использует старую кэшированную версию модели.

1 голос
/ 19 сентября 2008

Использование

var $useTable = false;

в определении вашей модели.

0 голосов
/ 19 апреля 2009

Э-э ... с чего начать. Сначала, как предположил Александр, очистите кеш приложения.

Если вы все еще получаете то же поведение, возможно, что-то не так с именами классов и / или файлов.

Помните правила , для контроллера:

* classname: BlastsController
* filename: blasts_controller.php

для модели:

* classname: Blast
* filename: blast.php

Не забывайте правильно обрабатывать нерегулярные перегибы .

...