4.5 View应用
视图(view)是MVC中的V。作用是完成视图文件的处理并将页面内容显示出来。
自V3.1以来,DoitPHP 只支持PHP文件格式的视图文件,直接由Controller基类(Controller Class)所提供的视图处理类方法直接搞定,无需调用视图基类(View Class)的文件,更无需实例化视图基类。
在介绍DoitPHP视图应用之前,先明确几个概念:
布局视图(layout):如上面所示,白色框架中的即是layout。布局就是整个页面的版面设计。通常大部分网站页面的版面设计都遵寻一个统一的布局。所以使用布局视图文件,可以实现视图文件代码的“重复利用”,从而提高程序开发效率。
控制器视图(content):即当前Action视图内容(如上图content的部分),这部分页面内容通常都是变化的。
挂件视图(widget):挂件(小部件)就是用于边栏中各种小模块,通常包括主菜单、搜索表单、登陆表单、热门文章列表、日历显示、广告区块、及菜单导航条。开发同一个挂件,可以被多个所需要的视图共用,所以DoitPHP的挂件也是为了实现代码共用,提高程序开发效率而设计的。
DoitPHP视图机制的运行原理:
如下图所示:首先由controller基类中的方法:assign()把页面内容的变量赋值到视图类方法的作用域中,便于加载视图文件时对变量内容的调用。其次分析出当前页面所要调用的视图文件(控制器视图)的路径。再次由display()加载和显示视图文件内容。其中display()的执行过程为:首先加载视图文件,依据assign()所赋值的变量值,获取视图文化的内容。其次分析布局视图文件。当布局文件存在时则获取其页面内容,接下来将控制器视图的内容赋值到布局视图$viewContent变量中。最后显示页面内容。如果布局视图文件不存在,则直接显示控制器视图页面内容。
注:除了assign()可以对视图变量赋值外,还有render()的第二参数也可以实现视图变量赋值。