当前位置: 网学 > 编程文档 > PHP > 正文

zend framework多模块多布局配置

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/06/21
lication_Module_Bootstrap
{
}

并且在application/Bootstrap.php文件里加入以下方法:
复制代码 代码如下:
protected function _initAppAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
''namespace'' => ''App'',
''basePath'' => dirname(__FILE__),
));
return $autoloader;
}

复制代码 代码如下:
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout = "layout"
admin.resources.layout.layout = "admin"

第二种,不同模块的布局脚本文件分别存放在各自的模块文件夹下
可以在application下新建如下目录和文件:
application/layouts/scripts/layout.phtml
application/modules/admin/layouts/scripts/layout.phtml

在配置文件application.ini中添加如下几行:
复制代码 代码如下:
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout = "layout"
admin.resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts/scripts"

不论是第一种还是第二种,这时如果访问http://localhost/admin,你会发现系统并没有使用期望的admin.phtml作为布局文件,而是使用了默认的layout.phtml。这是因为admin那行配置并不是系统默认能处理的有效配置,所以我们要自己来处理它。

我们新建文件:library/Rockux/Controller/Action/Helper/LayoutLoader.php,

针对第一种情况代码如下:
复制代码 代码如下:
class Rockux_Controller_Action_Helper_LayoutLoader extends Zend_Controller_Action_Helper_Abstract
{

public function preDispatch()
{
$bootstrap = $this->getActionController()
->getInvokeArg(''bootstrap'');
$config = $bootstrap->getOptions();
$module = $this->getRequest()->getModuleName();
if (isset($config[$module][''resources''][''layout''][''layout''])) {
$layoutScript = $config[$module][''resources''][''layout''][''layout''];
$this->getActionController()
->getHelper(''layout'')
->setLayout($layoutScript);
}
}

}

针对第二种情况代码如下:
复制代码 代码如下:
class Rockux_Controller_Action_Helper_LayoutLoader extends Zend_Controller_Action_Helper_Abstract
{

public function preDispatch()
{
$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);
}
}
}

接下来我们还需要将它添加到application/Bootstrap.php里去
复制代码 代码如下:
protected function _initLayoutHelper()
{
$this->bootstrap(''frontController'');
$layout = Zend_Controller_Action_HelperBroker::addHelper(
new Rockux_Controller_Action_Helper_LayoutLoader());
}

再次访问http://localhost/admin,应当就可以看到使用指定的布局文件了。
如果要针对某个特定的controller使用特定的layout,可以在controller的init()方法里添加如下代码:
复制代码 代码如下:
$layout = Zend_Layout::getMvcInstance();
$layout->setLayout(''layout_special'');

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号