App :: import()不起作用的可能原因是什么?

时间:2010-05-10 12:47:55

标签: php cakephp

我正在尝试实现一种在CakePhp中管理静态页面的简单方法,如this article中所述。

我遇到的问题是App::import()似乎没有在routes.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文件夹(models / StaticPage.php)中。

几周前我刚开始使用CakePhp,我想我在这里错过了一件简单的事情......

我正在使用CakePhp 1.3和Php 5.2.42。

3 个答案:

答案 0 :(得分:1)

快速浏览一下您引用的文章后,您的代码段就不匹配了。您正在导入ClassRegistry类(不需要导入),然后尝试实例化StaticPage。我建议您同时删除AppImport引用并使用ClassRegistry

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

您不需要AppImport行,因为ClassRegistry::init()都会加载模型并实例化对象。

我看到的另一个(潜在)问题是您的模型文件名不遵循惯例。它应该是models/static_page.php。蛋糕的变形可能无法处理与标准的偏差。

答案 1 :(得分:1)

我认为它不起作用的原因是因为你不遵循CakePHP的naming conventions for file names:文件名是小写的并且是强调的。因此,将文件重命名为static_page.php可以解决问题。

答案 2 :(得分:0)

如错误所示:您缺少Class StaticPage。你确定你有这个档案吗?如果你这样做,确保它在正确的位置,有正确的文件名,以便自动加载器可以找到它吗?。