`
willeager
  • 浏览: 93343 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

关于使用ZF的视图部分一些总结

阅读更多

1.  ZF默认情况下会启用(ViewRenderer )助手,在Front Controller最后一次指派action的时候,ViewRenderer 根据控制器的名称(例如index)和当前的action的名称(例如index)来决定使用哪个模板文件。

比如:application/views/scripts/index/index.phtml

然后解析模板文件并把内容保存在response对象中

2.  关闭(ViewRenderer )助手,在入口文件中调用$frontController->setParam('noViewRenderer', true);然后再控制器的action中使用如下的代码:

$view = new Zend_View();
$view->vars = $data;
echo $view->render('index.php');
这种情况就要手动指定模板文件了 

3. 使用第三方的模板系统,如smarty

在ZF官方文档Zend_View部分有介绍如果使用,个人觉得跟第2.种方法类似。而且也要关闭(ViewRenderer )助手。

另外与1.、2.两种方法的区别是不能使用ZF提供的一些视图助手了。

4. 关于Zend_Layout, 也是使用Zend_View来解析的,根据ZF文档有两种使用方式,

一种是与ZF MVC一起使用也就是与第1.种情况配合,这种方式能最大限度使用ZF的优势。在入口文件使用代码

Zend_Layout::startMvc(...);

   当进行多次转发的时候,由第1.条,默认只保存最后一次action对应模板的解析内容到response的default段(最终会保存在layout的content变量中),如果结合layout可以在每个action中解析一些内容到layout的不同响应段,类似$this->getResponse()->appendBody('内容', 'seg1');,这样就把'内容'保存到了layout的seg1变量中了

最后在布局文件中通过

<div id="seg1"><?= $this->layout()->seg1 ?></div>
<div id="content"><?= $this->layout()->content ?></div>

来使用,具体参考ZF文档 “和Zend Framework MVC一起使用 Zend_Layout ”一节

另一种方式是做为一个独立的组件

  • 大小: 49.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics