首頁 > 資料庫 > mysql教程 > ZF 视图层的技巧

ZF 视图层的技巧

WBOY
發布: 2016-06-07 15:16:04
原創
1078 人瀏覽過

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, 然后,通过这个助手来操作视图层.

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板