Zend框架的每个模块的设置

史蒂芬劳埃德沃特金斯 ,星期五2010年1月1日下午十时四十

我创建了一个后续这一职位的要求较少的配置,请参阅模块的布局- Zend框架

当使用Zend框架的模块,其明显的,如果你运行的各个(分)网站关闭同一个应用程序,你不一定需要同样的布局脚本的每个部分。 我决定去以下网站结构:

  /应用
     /控制器
         ...
     /模型
     /模块
         /默认
             /控制器
             /布局
                 /脚本
             /意见
                 /脚本
         / anotherModule
             ...
     /脚本

问题是建立在每个模块的基础上布局脚本。 这句话通过使用一个动作助手。 设置在每个模块的基础上的布局包括三个步骤:

  1. 的application.ini(或类似的配置设置):
      admin.resources.layout.layoutPath = APPLICATION_PATH“/模组/管理/布局/脚本”
     default.resources.layout.layoutPath = APPLICATION_PATH“/模组/预设/布局/脚本”
     member.resources.layout.layoutPath = APPLICATION_PATH“/模组/会员/布局/脚本”
     affiliate.resources.layout.layoutPath = APPLICATION_PATH“/模组/附属/布局/脚本” 
  2. 创建你的动作助手:
      <?PHP的
     / **
      *设置对每个模块的基础上布局路径
      *
      * @作者劳埃德沃特<lloyd@evilprofessor.co.uk>
      * @自2010年1月1日
      * /
    类Pro_Controller_Action_Helper_SetLayoutPath
        延伸Zend_Controller_Action_Helper_Abstract
     {
         / **
          *设置布局的基础上的模块路径
          * /
        公共职能preDispatch()在
         {
        	这个模块= $ $ -> getRequest() - >“getModuleName();
    
    	    如果($引导= $此-> getActionController()
    	                        - >“getInvokeArg('引导')){
    
    	         = $ $配置引导-> getOptions();
    
    	        如果(使用isset($配置[$模块] ['资源'] ['布局'] ['layoutPath'])){
    	             = $ layoutPath
    	                 配置$ [$模块] ['资源'] ['布局'] ['layoutPath'];
    	             $这个-> getActionController()
    	                  - >“getHelper('布局')
    	                  - >“setLayoutPath($ layoutPath);
    	         }
        	 }
         }
     } 
  3. 最后自举的动作助手:
      ...
         / **
          *设置上每个模块的基础布局脚本
          * /
        保护功能_initLayoutHelper()
    	 {
    	     $这个->引导('frontController');
    	     $布局= Zend_Controller_Action_HelperBroker::addHelper(
    	        新Pro_Controller_Action_Helper_SetLayoutPath());
    	 }
     ... 

4回应“Zend框架的每个模块的设置”

  1. Behrang 说:

    首先感谢您对你好,但有用的教程告诉我在哪里创建行动与巫婆的文件名助手?
    behrang

  2. 嗨Behrang,创建具有任何你喜欢的名字,我有我自己的'图书馆'命名空间'临'行动帮手。 你可以很容易地调用类的SetLayoutPath'并把它放在任何你喜欢,提供的代码,你可以找到它所需的类扩展

  3. 沙市kanth 说:

    嗨,亚姆与特定的数据库建立模块设置混乱...没有任何人有一个想法?

  4. 我觉得这可能很容易地实现usign上述模式。 首先,创建在您的INI文件选项沿文件:

    moduleName.db.user =“
    moduleName.db.password =“
    moduleName2.db.user =“
    等等... ...

    然后,只需生成数据库连接您认为合适的(Zend_Db的::工厂()或类似的)和藏在注册表中离开或设置为默认的适配器使用的Zend_Db_Table如果它(的Zend_Db_Table::setDefaultAdapter()来)。

给一个答复













全景主题 Themocracy

现在10访客在线
9人,1机器人,0位会员
今天最大游客:在01:03上午12点联合技术
本月:26日2011年7月5日上午12点35分联合技术
今年:130 28-03-2011下午10时40联合技术
所有时间:130 28-03-2011下午10时40联合技术