【问题标题】:Zend Framework Modules with common resources具有公共资源的 Zend 框架模块
【发布时间】:2011-04-01 03:58:53
【问题描述】:

我在搞清楚如何拥有模块化目录结构以及加载要跨模块共享的资源时遇到了很多麻烦。即,

application
--- /forms
--- /models
--- /modules
------/module1/
---------/models
------/module2/
---------/models

现在,我要做的是从模块中加载 /application/forms 中的表单。我尝试过的所有内容都导致这些类没有被加载。

我试过了: 1) 让 Zend 尝试自动解决。 2) 在主引导程序中为应用程序路径和模块指定所有路径。即,

protected function _initAutoload()
{
    $front = $this->bootstrap("frontController")->frontController;
    $modules = $front->getControllerDirectory();
    $default = $front->getDefaultModule();

    $moduleloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Application',
        'basePath'  => APPLICATION_PATH
    ));

    foreach (array_keys($modules) as $module) {
        $moduleloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => ucfirst(strtolower($module)),
            'basePath'  => $front->getModuleDirectory($module))
        );
    }
}

3) 多次在我的桌子上砸我的头。

.. 是的,我意识到我不需要模块循环,因为我在每个模块目录中都有空白引导程序。

欢迎提出任何建议。谢谢!

【问题讨论】:

  • 抱歉我的描述有误。我不包括表单,而是表单元素。这个认识给了我检查 Form_Element 是否真的映射到 Zend_Application_Module_Autoloader 的想法,但事实证明并非如此。通过将其添加到资源类型中,一切都开始工作了。

标签: php zend-framework


【解决方案1】:

试试这个:

protected function _initAutoload()
{
    $autoloader = new Zend_Application_Autoloader_Resource(array(
        'namespace' => 'Application',
        'basePath'  => APPLICATION_PATH,
        'resourceTypes' => array(
            'form' => array(
                'path' => 'forms/',
                'namespace' => 'Form'
            )
        )
    ));

    return $autoloader;
}

您似乎已经知道,您不需要模块部分。根据需要添加其他资源类型。

由于这与您已有的非常接近,因此可能还有另一个问题。假设上述情况应该有效:

  • APPLICATION_PATH 指向您应用中的 /application 目录
  • 表单类被命名为 Application_Form_Something
  • 这些类的文件名是Something.php(区分大小写)

例如如果你有联系表,你可以打电话给班级Application_Form_Contact,这将在application/forms/Contact.php

如果您仍然遇到问题,请提供一个未找到的表单类的示例,以及您调用它的方式和位置。

【讨论】:

  • 查看我的评论以获得我的自我实现的答案。我接受了它,因为它有一些很好的建议,并且可能对遇到类似问题的其他人有用。
猜你喜欢
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
相关资源
最近更新 更多