zend framework layout(页面布局)切换器

来源:互联网 发布:淘宝 商城 分销 编辑:程序博客网 时间:2024/06/10 00:53

zend framework 框架的 MVC 组件很强大,很好用。Zend_Layout 组件提供对页面布局的支持,往往一个网站都有着统一的页面布局,例如头部(包含LOGO,导航菜单,用户状态信息等),主部(页面的主要内容),尾部(一般包括版权信息)。但也有可能因为不同的功能模块,页面的结构布局会不同,例如前台的布局与后台管理的页面布局可能是不一样的,或者前台的新闻页面布局与会员中心的页面布局是不一样的。

 

所以为了提供方便的对不同的功能模块提供不同的页面布局控制,我写了一个layout切换插件,可以为不同的模块(module)、控制器(controller)、活动(action)配置不同的布局。

 

使用说明:

 

使用这个布局切换器,只需要配置布局影射即可,配置的参数结构是一个数组结构,例如要为admin模块设定为使用布局 adminLayout,则配置如下:

 

array(

'admin' => 'adminLayout'

)

 

也可以这样写:

 

array(

'admin' => array('layout' => 'adminLayout')

)

 

以上两个配置是一样的。如果要为admin模块的user控制器(controller)设定使用另一个布局 userLayout,则可以这样配置:

 

array(

'admin' => array(

'layout' => 'adminLayout',// 当没有匹配到控制器时,使用该布局

'controllers' => array(

'user' => 'userLayout'

)

)

)

 

以上这个配置,当进入到模块admin的user控制器时,则使用userLayout布局,否则如果进入模块admin的其它控制器,则使用 adminLayout布局。以上的配置也可写成如下这样:

 

 

array(

'admin' => array(

'layout' => 'adminLayout',// 当没有匹配到控制器时,使用该布局

'controllers' => array(

'user' => array('layout' => 'userLayout')

)

)

)

 

 

配置匹配动作(action)也是一样的道理,如让admin模块的user控制器的profile动作使用 profileLayout 布局,则配置如下:

 

array(

'admin' => array(

'controllers' => array(

'actions' => array(

'profile' => 'profileLayout'

)

)

)

)

 

使用示例:

 

$options = array(

'admin' => 'adminLayout' // 为模块 admin 配置布局为 adminLayout

'user' => array(

'controllers' => array(

'profile' => 'profileLayout',// 为模块user的控制器profile配置布局为profileLayout 

'account' => array('layout' => 'accountLayout') // 为模块user的控制器account配置布局为 accountLayout

)

),

'shop' => array(

'controllers' => array(

'product' => array(

'actions' => array(

'detail' => 'detailLayout',// 为模块shop的控制器product的detail动作配置布局为 detailLayout

'list' => 'listLayout'// action的布局指定只能是字符串,不能用 array('layout'=>'layoutName')的形式

)

)

)

)

);

 

Zend_Front::getInstance()->registerPlugin(new Jans_Controller_Plugin_LayoutSwitcher($options));

 

布局切换器插件的代码如下:

 

 

原创粉丝点击