Zend Framework在模块化应用程序中找不到表单

时间:2012-01-11 19:54:13

标签: zend-framework zend-form

我设置了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'

我哪里错了?

2 个答案:

答案 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[] =