我正在尝试从Rob Allen的“Zend Framework入门”中学习Zend框架。我使用了相同的示例,但得到了错误 -
致命错误:第14行的/var/www/html/workbench/sreekantk/zf-tutorial/application/controllers/IndexController.php中找不到“Application_Model_DbTable_Albums”类。
我想我必须设置模型文件夹的路径,但不知道该怎么做。任何人都可以帮助我解决这个问题。
这是我的Bootstrap.php
文件。
// application / 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;
}
}
谢谢你。它工作了。实际上我更改了文件夹结构,然后再次将appnamespace="Application"
添加到application.ini
文件中。谢谢大家的意见。
答案 0 :(得分:2)
只要你到达控制器,你的主要设置似乎没问题。所以,如果你把这个类放在一个单独的文件中,问题可能就是一个简单的错字。
a)以下所有内容,请注意下/下案例
b)注意模型文件夹是复数,而类是模型单数
c)确保该类名为Application_ Model _DbTable_Albums
d)确保文件名为Albums.php
,并且名为application/models/DbTable
祝学习ZF好运
答案 1 :(得分:1)
从版本1.9.2开始,默认模块将自动初始化appnamespace
中配置的命名空间的自动加载器(在vanilla安装时默认为“Application”)。您可以删除_initAutoload()
方法。
只要您的班级存在于application/models/DbTable/Albums.php
中且名为Application_Model_DbTable_Albums
,它就应该能够在首次使用时自动加载该类。
注意路径区分大小写。
答案 2 :(得分:0)
我正在按照相同的教程和Adrian World在11月9日13:26所说的话帮助我摆脱了错误。我的Bootstrap现在是:
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;
}
}
唯一改变的是模块到模型
答案 3 :(得分:0)
您应该定义当前Module的Bootstrap类。那就没事了。