Каковы возможные причины неработоспособности App :: import ()? - PullRequest
0 голосов
/ 10 мая 2010

Я пытаюсь реализовать простой способ управления статическими страницами в CakePhp, как описано в этой статье .

Проблема, с которой я сталкиваюсь, заключается в том, что App::import(), похоже, не импортирует необходимый класс в файле rout.php.

Код следующий:

App::import('Model','StaticPage');
$page = new StaticPage();

$slugs = $page->find('list', array(
        'fields' => array('StaticPage.slug'),
        'order' => 'StaticPage.slug DESC'
));

Я получаю сообщение об ошибке: Fatal error: Class 'StaticPage' not found in ...
Этот класс присутствует в папке моделей (models / StaticPage.php).

Я только что запустил CakePhp несколько недель назад, и мне кажется, я упускаю простую вещь здесь ...

Я использую CakePhp 1.3 и Php 5.2.42.

Ответы [ 3 ]

1 голос
/ 10 мая 2010

Быстрый просмотр статьи, на которую вы ссылаетесь, ваш фрагмент не совпадает. Вы импортируете класс ClassRegistry (который не нужно импортировать), а затем пытаетесь создать экземпляр StaticPage. Я бы рекомендовал удалить ссылку AppImport все вместе и использовать ClassRegistry:

$page = ClassRegistry::init( 'StaticPage' );

Вам не нужна строка AppImport, потому что ClassRegistry::init() одновременно загружает модель и создает объект.

Другая (потенциальная) проблема, которую я вижу, состоит в том, что имя файла вашей модели не соответствует соглашению. Это должно быть models/static_page.php. Перегиб Пирога, возможно, не обрабатывает отклонение от нормы.

1 голос
/ 10 мая 2010

Я думаю, причина этого не в том, что вы не следуете соглашениям CamingPHP по именованию имен файлов : имена файлов строчные и подчеркнуты. Поэтому переименование файла в static_page.php должно решить проблему.

0 голосов
/ 10 мая 2010

Как и в сообщении об ошибке: вам не хватает ClassicPage класса. Вы уверены, что у вас есть этот файл? Если вы уверены, что он в нужном месте, имеет правильное имя файла, чтобы автозагрузчик мог его найти?.

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