Home >Database >Mysql Tutorial >ZF 视图层的技巧

ZF 视图层的技巧

WBOY
WBOYOriginal
2016-06-07 15:16:041081browse

ZF 版本: 1.6 在 ZF中, 做为MVC一个重要组层部分的 VIEW控制器由 三部分组成,分别是: 最外层视图应控制器 Zend_Controller_Action_Helper_ViewRenderer, 视图引擎核心层 Zend_View (这一部分是可以重写的, 所谓把 ZF与Smarty整合,主要是这一部分), 视图层最

ZF 版本: 1.6

 

在 ZF中, 做为MVC一个重要组层部分的 VIEW控制器由 三部分组成,分别是:

    最外层视图应控制器 Zend_Controller_Action_Helper_ViewRenderer,

    视图引擎核心层 Zend_View (这一部分是可以重写的, 所谓把 ZF与Smarty整合,主要是这一部分),

    视图层最底层接口Zend_View_Abstract

 

在实际的行为控制器以及分发器中, 都是直接使用 Zend_Controller_Action_Helper_ViewRenderer, 这个在ZF 启动程序中就需要注册完成的, 由于底层的Zend_View_Abstract接口约束,以及最外层,ViewRenderer的规范, 致使ZF中的视图层,变得及其灵活, 而且规范,你可以使用ZF视图层, 也完全可以扩展自己的视图层核心引擎.

 

其次,Zend_Controller_Action_Helper_ViewRenderer, 是一个标准的视图助手,  视图助手有部分方法, 例如 postDispatch, preDispatch 等, 这些都是和视图助手经济人灵活通信的方法,. 因此可以在一个分发器的前后, 可以通过这些方法,执行部分任务. 每一个动作助手都可以定义自己的 postDispatch方法等.

 

视图文件命名问题:

    所有的HTML视图文件的名称部分, 在ViewRenderer这里是做为一个ACTION进行处理的,也就是说, 在控制器类 例如:

 

function indexAction(){

    $this->view->render($actionName);

}

其中, $actionName, 并不能完全认为就是文件名前缀部分, 如果这个名字是连贯的小写字母,那么 这么名字就是直接的HTML视图文件名了, 如果这里面有大小写,那么大写前面在模板中,默认加上了中划线 例如 actionName, 对应的模板文件名应该是action-name.

 

控制器对象中的视图对象:

    这里所谓的控制器,是指对应于模块->控制器->行为结构的控制器,例如 class Test_IndexController,  这样的一个类 .

    在ZF中, 行为控制器是又分发器dispacher来实例化,并执行的,在这个过程中, 每一个控制器都有一个默认的 initView方法会被默认执行, 因此, 每一个控制器,也自然有一个属性 $view可以直接访问, 例如 $this->view , 但是这里注意, 这儿$this->view 所指向的起始是视图层三层结构中的 中间层对象, 而并非最外层的视图控制器 View_Renderer对象, 而在输出一个视图的时候,会有一些初始化的工作, 是在这一部分完成的, 因此在控制器中, 不能直接调用$this->view,来操作视图层. 

    如果想输出一个对象,首先应该通过视图助手获得视图对象 View_Renderer, 然后,通过这个助手来操作视图层.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn