2

我正在尝试从 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;
    }

}

谢谢 Just H. 它起作用了。实际上我更改了文件夹结构,然后再次添加appnamespace="Application"application.ini文件中。谢谢大家的意见。

4

4 回答 4

2

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

a) 使用以下所有内容,注意小写/大写
b) 注意模型文件夹是复数而类是模型单数
c) 确保类名为 Application_Model_DbTable_Albums d ) 确保文件被命名并在一个名为的文件夹
Albums.phpapplication/models/DbTable

祝学习ZF好运

于 2011-08-08T14:28:12.247 回答
1

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

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

请注意路径区分大小写。

于 2011-08-09T03:59:52.260 回答
0

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

于 2013-04-06T15:13:22.867 回答
0

我正在遵循相同的教程,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;
    }
}

唯一改变的地方是从模块模型

于 2012-03-29T03:09:05.220 回答