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

发布于 2024-12-26 10:15:27 字数 718 浏览 5 评论 0 原文

我设置了 Zend Framework 模块化应用程序。我的模块之一称为“frontend”,它是默认模块(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”

我哪里出错了?

I have a Zend Framework modular application set up. One of my modules is called 'frontend' and it is the default module (resources.frontController.defaultModule = "frontend" is in my config file).

I have a form, Frontend_Form_PropertySearch located at /application/modules/frontend/forms/PropertySearch.php and attempting to use it in my controller as follows:

public function searchAction()
{
    $form = new Frontend_Form_PropertySearch();

    $form->submit->setLabel('Search');
    $this->view->form = $form;
}

However, I'm getting the following error:

Fatal error: Class 'Frontend_Form_PropertySearch' not found in /Users/Martin/Dropbox/Repositories/realestatecms/application/modules/frontend/controllers/PropertiesController.php on line 17

Where am I going wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

罗罗贝儿 2025-01-02 10:15:27

解决方案之一可以是添加文件 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

One of solutions could be adding file application/modules/frontend/Bootstrap.php and put this (similar working on one of my projects):

<?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;
    }
}

Another solution, as described by 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
{

}

Second one uses default resource autoloader as described in documentation: http://framework.zend.com/manual/zh/zend.loader.autoloader-resource.html#zend.loader.autoloader-resource.module

末骤雨初歇 2025-01-02 10:15:27

确保您的 ini 文件包含这些行

resources.frontController.moduleDirectory = APPLICATION_PATH "/path/to/your/modules"
resources.modules[] =

Make sure your ini file contains these lines

resources.frontController.moduleDirectory = APPLICATION_PATH "/path/to/your/modules"
resources.modules[] =
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文