现在的位置: 首页 > 综合 > 正文

ZF 视图层的技巧

2013年12月13日 ⁄ 综合 ⁄ 共 1225字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.