我正在尝试使用带有模块的表单,它们应该存储在模块中。所以起初我的文件结构:
application/
(...other directories)
modules/
group/
controllers/
IndexController.php
(...controllers)
forms/
Create.php
views/
scripts/
(...view scripts)
Bootstrap.php
在IndexController中,我正在尝试通过
设置Formnew Group_Form_Create()
,Create.php中的类当然是Group_Form_Create。我收到以下错误消息:
Fatal error: Class 'Group_Form_Create' not found in (...)\application\modules\group\controllers\IndexController.php on line 380
具有Group_Bootstrap类的Bootstrap.php只是一个空类。 实际上,我使用的是默认的Zend结构,但无论如何它都无法正常工作。有什么想法可以解决问题或可能的解决方案吗?
答案 0 :(得分:3)
在我的模块引导程序(APPLICATION_PATH / modules / group / Bootstrap.php)中,如果使用以下代码:
//Loads the autoloader resources
$this->_moduleName = 'group';
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => APPLICATION_PATH ."/modules/".$this->_moduleName."/",
'namespace' => '',
'resourceTypes' => array(
//Tells the application where to find the forms
'form' => array(
'path' => 'forms/',
'namespace' => ucfirst($this->_moduleName).'_Form_'
),
//Tells the application where to find the models
'model' => array(
'path' => 'models/',
'namespace' => ucfirst($this->_moduleName).'_Model_'
)
)
));
然后我调用这样的表格或模型:
$frm = new Group_Form_Create();
我在所有模块中使用相同的代码段,我只更改$ this-> _moduleName的值;每一次。
希望这有帮助!
答案 1 :(得分:1)
听起来你的模块bootstraps没有被运行。这些由模块资源触发,如果您有:
,则会加载该模块资源resources.modules[] = ""
在application.ini
中。如果它不存在,请添加它。
答案 2 :(得分:0)
理想情况下,它应该开箱即用。
在你的引导程序中添加它:
protected function _initAutoload() {
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Group_',
'basePath' => dirname(__FILE__),
));
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
return $autoloader;
}