【问题标题】:Zend framework Fatal error: Class 'Application_Model_DbTable_Albums' not found inZend 框架致命错误:在中找不到类“Application_Model_DbTable_Albums”
【发布时间】:2011-08-08 08:09:53
【问题描述】:

我正在尝试从 Rob Allen 的“Zend 框架入门”中学习 Zend 框架。我使用了给出的相同示例,但出现错误 -

致命错误:在第 14 行的 /var/www/html/workbench/sreekantk/zf-tutorial/application/controllers/IndexController.php 中找不到类“Application_Model_DbTable_Albums”。

我想我必须设置模型文件夹的路径,但不知道该怎么做。谁能帮我解决这个问题。

这是我的Bootstrap.php 文件。

//应用程序/Bootstrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath'  => APPLICATION_PATH.'/application/modules'));
        return $autoloader;
    }

}

谢谢只是 H。它奏效了。实际上我更改了文件夹结构,然后再次将appnamespace="Application" 添加到application.ini 文件中。谢谢大家的cmets。

【问题讨论】:

  • 能否告诉我们您的模型类文件所在的文件夹结构,以及您如何为模型设置自动加载。
  • 您是否已将“Zend 库”粘贴到应用程序的 /library 文件夹中...?
  • 也许检查您的 application.ini。我认为您希望拥有以下设置:appnamespace = Application,然后确保您的模型位于 application/models 目录中。
  • @Just H:我也做过。
  • @Chris:我已经包含了我的引导文件。

标签: zend-framework classnotfound


【解决方案1】:

只要您使用控制器,您的主要设置似乎就可以了。因此,如果您将类放在单独的文件中,则问题可能是某个地方的简单错字。

a) 使用以下所有内容,注意小写/大写
b) 请注意,models 文件夹是 plural 而类是 Model singular
c) 确保类名为 Application_Model_DbTable_Albums
d) 确保文件名为 Albums.php 并位于名为 application/models/DbTable 的文件夹中

祝你学习ZF好运

【讨论】:

  • 都检查过了。但我仍然遇到同样的错误。我是否必须在某个地方设置模型的路径,就像我们在 application.ini 文件中为控制器所做的那样。
  • 唯一需要的就是 application.ini 中的 appnamespace = "Application" 作为默认命名空间。我不知道你的学习例子,但应该被覆盖。从那时起,自动装载机应该接管。再次,确保你没有错别字。就在昨天,由于一些错字,我浪费了几个小时。错误很简单:找不到类,这通常是路径或命名问题!
  • 我刚刚注意到,在您的引导示例中,您编写了 modules。如果那是专门针对您的 DbTable 的——那将是一个错字,因为您的数据库表在 models 中!!!因此,请确保您的 DBTable 在模型而不是模块中。
【解决方案2】:

从 1.9.2 版开始,默认模块将自动为 appnamespace 中配置的命名空间初始化自动加载器(在原版安装中默认为“应用程序”)。您可以删除您的 _initAutoload() 方法。

只要您的类存在于application/models/DbTable/Albums.php 并命名为Application_Model_DbTable_Albums,它就应该能够在首次使用时自动加载该类。

注意路径区分大小写。

【讨论】:

    【解决方案3】:

    我正在遵循相同的教程,Adrian World 在 2011 年 8 月 9 日 13:26 所说的话帮助我摆脱了错误。我的引导程序现在是:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
        protected function _initAutoload()
        {
            $autoloader = new Zend_Application_Module_Autoloader(array(
                'namespace' => '',
                'basePath'  => APPLICATION_PATH.'/application/models'));
            return $autoloader;
        }
    }
    

    唯一改变的地方是从 modulesmodels

    【讨论】:

      【解决方案4】:

      您应该定义当前模块的引导类。然后就好了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-04
        • 2011-11-08
        • 2015-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-07
        相关资源
        最近更新 更多