当前位置:  开发笔记 > 编程语言 > 正文

Zend Framework模块化应用程序,无法为每个模块加载模型,自动加载模型?

如何解决《ZendFramework模块化应用程序,无法为每个模块加载模型,自动加载模型?》经验,为你挑选了4个好方法。

有没有办法为每个模块建立模型?我有3个模块,一个是"联系人"模块.我在模块/ contacts/models/Codes.php 代码控制器中为它创建了一个模型

class Contacts_CodesController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    $this->view->messages = $this->_helper->flashMessenger->getMessages();  

    }

    public function indexAction()
    {

    $codesTable = new Contacts_Model_Codes();

    }

代码型号:

class Contacts_Model_Codes extends Zend_Db_Table
{
    protected $_name = 'codes';
}

我得到的错误: 致命错误:第26行/Applications/MAMP/htdocs/zf_site/application/modules/contacts/controllers/CodesController.php中找不到类'Contacts_Model_Codes'

谢谢



1> EricP..:

我发现了这个问题.我忘了在我的联系人模块中放入一个bootstrap文件.现在一切正常,我可以让我的模块使用自己的模型.

class Contacts_Bootstrap extends Zend_Application_Module_Bootstrap
{

}


还要在您的application.ini中添加"resources.modules [] ="

2> RowG..:

我猜我找到了解决方案!:)当您在application.ini文件中添加下一个资源时,这是一个问题

resources.frontController.defaultModule = "Default"

而且你也使用某种参数.我认为这是一个Bug.

实现模块的正确方法是:

1 - 使用zf工具创建所需的模块和" 默认 "模块

2 - 在apllication.ini中告诉ZF模块的位置以及这些模块的控制器所在的位置

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleControllerDirectoryName = "controllers"

使用已知的

resources.modules = ""

并设置:

resources.frontController.params.prefixDefaultModule = ""

这很重要,因为zf工具将其设置为"1".这是错误.:)

请记住,不要把默认模块放在哪里!

3 - 为每个模块创建bootstrap文件并放入:

如果我的模块是'Evacol':



将它保存到/ modules/Evacol /很明显

记下Evacol_ ...和..._ Module_Bootstr ...我的模块的名称延伸正确的类别.不要使用zf工具创建的bootstrap文件的默认值.我做的 :)

不要修改任何一个.这不是必要的.

瞧!相信我.有用!

这是Zend Framework 1.10.8



3> Goran Jurić..:

您必须使用自动加载程序注册"Contacts_"命名空间.您可以使用Zend_Application_Module_Autoloader进行此操作.

$autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Contacts_',
        'basePath'  => dirname(__FILE__) . '/modules/cotacts',
    ));

这将在您提供的basePath中为您的模块创建以下映射.

api/         => Api
forms/       => Form
models/      => Model
    DbTable/ => Model_DbTable
plugins/     => Plugin

如果您使用Zend_Application来提升您的应用程序及其模块,那么您不应该需要这个,因为文档说:

当使用带有Zend_Application的模块引导时,默认情况下将为每个离散模块创建Zend_Application_Module_Autoloader的实例,允许您自动加载模块资源.



4> Dave K..:

resources.modules[] =

到你的配置ini

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有