返回首页
当前位置: 首 页 > PHP框架 > Zend Framework >

7.Zend Framework中使用Zend_View与Zend_Layout玩布局-转

时间:2009-01-08 22:41来源:http://www.oophp.cn 作者:kylingood 点击:
在朋友们要用Zend_Layout布局..所以在看这教程之前..要先明白什么是Layout..在Zend Farmework 里它的手册里我是没有看到有很好的对这个词有什么说明的..
  

转载自OOPHP开源博客 [ http://www.oophp.cn/ ]
原文链接地址:http://www.oophp.cn/article/article/id/210/


     久没有写完我的教程了...可能有很多朋友都不想再来我这个博客上.....呵呵...不过也没什么关系...当这个博客没有资源了.来这里也没什么东西可以学的...正好在元旦休息...我有时间不要再忙什么事...现在就接着写我答应给朋友的教程...前时间..我只写到了第6篇...所以今天就来写第7篇文章...
      在朋友们要用Zend_Layout布局..所以在看这教程之前..要先明白什么是Layout..在Zend Farmework 里它的手册里我是没有看到有很好的对这个词有什么说明的..我看手册上,再经过我自己的理解(我自己的理解,可能有误,请大家体谅,谢谢^_^):Layout在英文里的意思是指:安排,设计,布局,规划图,布局图等意思..

 

同样在我们在做网站设计的时候,,我们也会有规化..网站页面可能会有很多重复的部分..比如说页面的头部,页面脚部.这些部分几乎在每一个部分都可以重用...所Zend Framework 就提供我们一个组件Zend_Layout,它让我们可以把这些重复的东西写在一个共用的文件里(这里暂时先这样叫).也就可以说是一个页面的布局里.通过这个组件,我们就可以省去很多重复的工作..让我们专心在程序开发上..同时对以后的代码维护也带来很大的方便!
   OK!当我们理解了什么叫Layout.我们再来运用这个Zend_Layout就不会是难事了..现在我一步一步来和朋友们交流怎样用这个组件.
第一步:初始化Zend_Layout.
  当您打算要使用Zend_Layout时.您需要在你的入口文件(index.php)或是在你需要的控制器里先初始化Zend_Layout,让它和MVC一起使用.
其代码如下:

<?php
//startMvc里面的数组是你指定存放Layout文件的路径
Zend_Layout::startMvc(array('layoutPath' => ROOT_DIR.'/app/views/layouts'));
?>

在这里startMvc()可以带一个可选的数组或Zend_Config 对象来定制实例,有利于你对不同的页面使用不同的Layout.这样的话用起来可以更方便,灵活.

第二步:建立你的Layout模板.
  这里就是比较重要的,layout文件模板默认存放的路径是/app/views/layouts下面.当然你也可以自己定义其它的路径,比如说:你可以在startMvc()里设置为Zend_Layout::startMvc(array('layoutPath' => ROOT_DIR.'/app/views/kylingood/layouts'));注意我这里加了一层kylingood文件夹.所以看你自己喜欢怎样.
你都可以设置的.. 这个layout文件内容就是把你设计的网站有相同部分,可以重用的内容放在这里..页面代码基本如下(代码内有注解):

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OOPHP教程,如何使用Zend_Layout</title>
</head>
<body>
<div id="content">
<!-- 这里页面body内容,这里会变-->
<?php echo $this->layout()->content ?>
</div>
<div id="sidebar">
<!-- 这里页面侧边内容,可以重用,内容不变-->
 <?php echo $this->layout()->sidebar; ?>
</div>
<div id="footer">
<!-- 这里页面页脚内容,可以重用,内容不变-->
<?php echo $this->layout()->footer; ?>
</div>
</body>
</html>


第三步:在控制器里设置你共用代码的内容.
你要在的布局存放你取到的数据或是其它内容时..你就需要设置这个内容.并让它可以在你的View页面呈现也来.这里我们只要做以下步骤:
代码如下(代码内有注解):

<?php
class IndexController extends Zend_Controller_Action
{
 //这控制器里调用Layout
 function indexAction()
  {
   $response = $this->getResponse();
   //sidebar.phtml,footer.phtml都是
   //公共部分.这二个页面分别会替换掉Layout里面的二个变量
   // <?php echo $this->layout()->sidebar; ?>
   //<?php echo $this->layout()->footer; ?>
   //所以我们就可以实现重用...
   $response->insert('sidebar', $this->view->render('sidebar.phtml')); 
   $response->insert('footer', $this->view->render('footer.phtml')); 
  }
?>



总结:
当我们完成以上步骤时.我们就可以运用Zend_Layout.只要我们在所需用要的控制器里写上下面这代码..程序就会自动调用我们设定好的Layout.
但是我们也会遇到一个问题:就是当我们不想只用一个Layout怎么办?或是我想把我现在的页面换一个版形我要怎样做?难不成我要重新再写一次程序.?
哈哈...不要担心..你只要在你的控制器里写上这代码$this->_helper->layout->setLayout('newLayout');你就可以把你原来的Layout给换掉.
如此一来你的网站就变成另一个版形了...这样是不是很方便啊??呵呵.~~~~
当然也有朋友会说..要是我不想用Zend_Layout怎么办?我要禁用Layout...!!!Zend Framework 告诉你了..你只要写句:$this->_helper->layout->disableLayout();
你在你的控制器里用上它..不想要的Layout就会消失...最后..还有很多问题...比如说要是有多个不同的模块要怎样用不同的Layout...怎样改变Layout....等等
问题很多...时间关系我不能一一说明..只希望想学的朋友认真去学习...才会得到更多..我只是给大家一个思想...谢谢

顶一下
(3)
60%
踩一下
(2)
40%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
发布者资料
掂量 查看详细资料 发送留言 加为好友 用户等级:高级会员 注册时间:2009-01-05 00:01 最后登录:2010-01-12 12:01
推荐内容