我设置了Zend Framework模块化应用程序。我的一个模块称为'前端',它是默认模块(resources.frontController.defaultModule = "frontend"
在我的配置文件中。)
我有一个表单Frontend_Form_PropertySearch
位于 /application/modules/frontend/forms/PropertySearch.php ,并尝试在我的控制器中使用它,如下所示:
public function searchAction()
{
$form = new Frontend_Form_PropertySearch();
$form->submit->setLabel('Search');
$this->view->form = $form;
}
但是,我收到以下错误:
致命错误:第17行的/Users/Martin/Dropbox/Repositories/realestatecms/application/modules/frontend/controllers/PropertiesController.php中找不到类'Frontend_Form_PropertySearch'
我哪里错了?
答案 0 :(得分:2)
其中一个解决方案可能是添加文件application/modules/frontend/Bootstrap.php
并将其设置(类似于我的某个项目):
<?php
class Frontend_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Frontend_',
'basePath' => APPLICATION_PATH .'/modules/frontend',
'resourceTypes' => array (
'form' => array(
'path' => 'forms',
'namespace' => 'Form',
),
'model' => array(
'path' => 'models',
'namespace' => 'Model',
),
)
));
return $autoloader;
}
}
另一种解决方案,如akrabat:http://akrabat.com/zend-framework/bootstrapping-modules-in-zf-1-8/
所述// file application.ini
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""
File: /application/modules/frontend/Bootstrap.php
<?php
class Frontend_Bootstrap extends Zend_Application_Module_Bootstrap
{
}
第二个使用默认资源自动加载器,如文档中所述:http://framework.zend.com/manual/zh/zend.loader.autoloader-resource.html#zend.loader.autoloader-resource.module
答案 1 :(得分:0)
确保您的ini文件包含这些行
resources.frontController.moduleDirectory = APPLICATION_PATH "/path/to/your/modules"
resources.modules[] =