注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

(power up)

道可道,非常道。

 
 
 

日志

 
 
 
 

Zend Framework 1.11 多模块快速指南  

2012-03-23 21:34:25|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
接触过ZF,但没有真正的用过. 现在手里正好有一个项目用ZF来做.

项目有前台和后台,用两个模块来实现: default, admin, 很上图看看目录结构

test

|- application

|- configs

|- application.ini

|- models

|- modules

|- admin

|- controllers

|- forms

|- layouts

|- models

|- views

|- default

|- controllers

|- forms

|- layouts

|- models

|- views

`- Bootstrap.php

|- css

`- index.php

设置application.ini

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "controllers"
resources.frontController.params.displayExceptions = 0

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.params.prefixDefaultModule = "0"

resources.layout.layoutPath = APPLICATION_PATH "/modules/default/layouts/scripts/"
admin.resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts/scripts/"

autoloaderNamespaces.vender = "Vender_"

resources.modules[] =
resources.view[] =

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

创建helper函数重新设置layout
library/Vender/LayoutLoader.php

<?php

class Vender_LayoutLoader extends Zend_Controller_Action_Helper_Abstract
{

public function preDispatch ()
{
// 通过bootstrap获取资源参数
$bootstrap = $this->getActionController()->getInvokeArg('bootstrap');
$config = $bootstrap->getOptions();
// 取得模块名称
$module = $this->getRequest()->getModuleName();
if (isset($config[$module]['resources']['layout']['layoutPath'])) {
$layoutPath = $config[$module]['resources']['layout']['layoutPath'];
$this->getActionController()
->getHelper('layout')
->setLayoutPath($layoutPath);
}
}
}

在Bootstrap.php里面添加自动加载函数

protected function _initLayoutHelper ()
{
$this->bootstrap('frontController');
$layout = Zend_Controller_Action_HelperBroker::addHelper(
new Vender_LayoutLoader());
}


这里有一个问题,多模块怎么共用模型.通过上面的设置,每个模块默认是访问自己的models文件夹里面的模型文件的,如果有共用的模型文件可以放到library文件夹里,这样加载的时候不会有问题
/library/Common/DbTable/Table.php
class Common_DbTable_Table extends Zend_Db_Table_Abstract
当然还要在application.ini里设置自动加载

autoloaderNamespaces.common = "Common_"

  评论这张
 
阅读(381)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017