代码之家  ›  专栏  ›  技术社区  ›  Julien Poulin

app::import()不工作的可能原因是什么?

  •  0
  • Julien Poulin  · 技术社区  · 15 年前

    我正在尝试实现一种在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 回复  |  直到 15 年前
        1
  •  1
  •   dhofstet    15 年前

    我认为它不起作用的原因是你没有遵循cakephp naming conventions for file names :文件名为小写并加下划线。因此将文件重命名为 static_page.php 应该能解决问题。

        2
  •  1
  •   Rob Wilkerson    15 年前

    在快速浏览了您引用的文章后,您的代码片段不匹配。你正在导入 ClassRegistry 类(不需要导入),然后尝试实例化 StaticPage . 我建议删除 AppImport 一起参考并使用 类注册表 :

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

    你不需要 应用导入 行,因为 ClassRegistry::init() 同时加载模型并实例化对象。

    我看到的另一个(潜在)问题是模型文件名不符合约定。应该是 models/static_page.php . 蛋糕的拐点可能无法处理偏离标准的问题。

        3
  •  0
  •   kalkin    15 年前

    就像错误所说的:您丢失了类staticpage。你确定你有这个文件吗?如果这样做了,确定它在正确的位置,有正确的文件名,以便自动加载器可以找到它?.