php发展

注册

 

发新话题 回复该主题

ThinkPHP框架实战讲解视图解读 [复制链接]

1#

ThinkPHP框架常用的是MVC模式,M是模型、V是视图,C是控制器。通过MVC模式将数据从数据库中查询出来,然后传递到页面中。下面我们来说一下具体的情况;

程序

一、视图渲染

模板定位规则:当前模块/view/当前控制器名(小写)/当前操作(小写).html。在5.1.6版本后系统会以简洁模式定位模板文件位置,规则如下:当前模块/view/当前控制器(小写)_当前操作(小写).html

1、Fetch方法

fetch方式是渲染模板时最常用的方法,在使用此方法的前提是控制器类需要继承系统控制器基础类。使用方式如下:

(1)、不需要传递任何参数,框架会自动定位到模板文件;

return$this-fetch();

(2)、传递一个参数,框架会定位至当前控制器下的参数一模板文件;

return$this-fetch(edit);

(3)、传递两个参数,框架会定位至参数一控制器下的参数二模板文件;

return$this-fetch(member/read);

注意事项:在书写参数时请不要书写任何后缀,参数只是目录名称或文件名称而已。

(4)、视图根目录下文件

如果想把view文件夹内的单独文件进行渲染,可以在参数位置进行如下书写:

return$this-fetch(/menu);

(5)、特殊模板文件或特殊位置文件

如果项目中存在特殊模板文件,又不想移动位置,可以通过如下方式进行调用:

return$this-fetch(./template/menu.html);

上面书写的目录位置是相对于当前项目入口文件位置(public目录),模板文件后缀无固定要求,可以为html、php、tpl等格式

PHP代码

2、助手函数方式

如果控制器未继承系统基础控制器类,同样可以实现视图模板的输出,框架提供了助手函数view(),可以使用如下命令:

returnview();

可传递参数及数据,常见的使用方式如下:

returnview(模板文件路径,数据);

3、直接解析模板方式

项目中某些页面可能通过直接解析模板的方式就可以实现功能,那么我们可以通过最简单的方式对模板文件进行输出。使用如下命令:

return$this-display();

此方式会直接渲染内容,同样模板标签在视图中可以正常使用。

HTML模板

二、视图赋值

1、assign方法

在继承系统基础控制器类后可以通过如下命令进行视图赋值:

$this-assign(名,值);

批量赋值方式:

$this-assign([名=值,名=值]);

2、方法传入参数方式

此方式在进行视图渲染中提及到了,通过设置模板文件位置时携带数据。命令如下:

$this-fetch(path,[名=值,名=值]);$this-display(path,[名=值,名=值]);

3、助手函数赋值方式

这种方式是项目开发过程中最常见的模式,助手函数无需继承基础控制类,相对而言代码更加精简、可读性更高。命令如下:

returnview(path,[名=值,名=值]);

4、公共模板变量赋值方式

可以使用视图类的share静态方法进行全局公共模板变量赋值。命令如下:

usethink\facade\View;//赋值全局模板变量View::share(name,value);//或者批量赋值View::share([name1=value,name2=value2]);

视频过滤

三、视图过滤

1、局部过滤

在单独方法内进行视图过滤操作。命令如下:

//使用视图输出过滤return$this-filter(function($content){returnstr_replace(\r\n,br/,$content);})-fetch();

2、全局过滤

如果进行全局过滤方式,需要在初始化方法中进行设置。命令如下:

protectedfunctioninitialize(){$this-view-filter(function($content){returnstr_replace(\r\n,br/,$content);});}

总结:视图过滤方式可以理解过对视图模板中内容进行了替换操作,可以通过此方式减少代码空行,无用的缩进。减少代码体积。

四、模板引擎

框架中内置了模板引擎,默认可以忽略对此进行设置,同时框架支持自定义引擎模式。在配置目录(config目录)下的template.php文件中可进行配置。

默认提供了两种扩展引擎:think-angular、twig(都不是很完美,不建议使用

4、)

五、扩展

如果只想获得解析文件而不进行渲染,如果生成静态HTML文件,采用纯静态化模式。可以使用如下命令:

$html=$this-fetch()-getContent();

此方式返回字符串,可以继承文件创建方式,批量生成HTML静态文件,便于网站优化。

六、总结

1、依据场景,选择不同的渲染方式;

2、合理的进行模板赋值;

3、牢记特殊模板文件位置是基础项目入口文件位置;

4、模板文件配置目录为:config/template.php文件;

分享 转发
TOP
发新话题 回复该主题