ThinkPHP 模板引擎使用详解


Posted in PHP onMay 07, 2017

ThinkPHP 内置的模板引擎来定义模板文件,以及使用加载文件、模板布局和模板继承等高级功能。

每个模板文件在执行过程中都会生成一个编译后的缓存文件,其实就是一个可以运行的 PHP 文件。

引用自 http://www.kancloud.cn/manual/thinkphp5/118122

PHP

/*index/controller/example.php*/
 
use think\Controller;
 
class test extends Index {
 
  public function template (){
    $name = 'Jerry';
    $allName = [
      0 => "Jerry", 
      1 => "Tom"
    ];
 
    $this->assign('nameA',$name);
    $this->assign('allName',$allName);
 
    return $this->fetch('example');
  }
}

 
HTML

/*index/view/example.html*/
 
<span>{$nameA}</span>
 
{volist name="allName" id="vo"}
 
  <p data-sub="{$key}" data-index="{$i}">{$vo}</p>
 
{/volist}
 
 
Result

<br /><span>Jerry</span>
 
<p data-sub="0" data-index="1">Jerry</p>
 
<p data-sub="1" data-index="2">Tom</p>

这样 ThinkPHP 便完成了对页面的解析工作,其中涉及到 模板实例化、定位、赋值、渲染及标签的使用。

视图实例化

暂无

模板赋值

显然在在模板中直接使用 $name 是找不到该变量的。必须使用 assign 方法对模板赋值。在执行渲染输出函数前, assign 方法使 函数内部变量与模板变量建立起映射关系。

$this->assign('name',$name);
$this->assign('allName',$allName);

通过赋值之后,便可以在模板文件中使用 {$nameA} 来输出该变量了。

模板渲染

当数据已经准备好渲染到页面上,还需要指定 html 文件作为渲染模板,为当前函数执行 fetch 方法时候传入 example 参数。 

return $this->fetch('example');

模板标签

在模板文件中使用内置标签可以帮助我们在模板中循环、判断变量。它以一对花括号 {tag} {/tag} 作为开标签和闭标签。 { 与 } 之间必须紧跟标签属性或值,存在 空格 和 换行 都不能在渲染时被解析。

volist 标签就是内置标签中的其中一个,通常用来循环某个数组变量。

{volist name="allName" id="vo"}
 
  <p data-sub="{$key}" data-index="{$i}">{$vo}</p>
 
{/volist}

allName 是通过模板赋值的变量 ,现在可以在模板上直接使用了,显然它是一个数组, volist 标签对它做了循环操作。

volist 标签常用的一些属性:

prop name id
key 数组名 当前元素
value allName vo

隐藏在 volist 中的有几个内部变量 {$key} {$i} ,分别代表了 数组下标 和 循环次数 。

内置标签

与 volist 一样好用的内置标签还有很多:

<notempty name=""></notempty> //判断数据是否不为空 不为空则执行
PHP 相关文章推荐
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
php去除字符串换行符示例分享
Feb 13 PHP
php的ajax简单实例
Feb 27 PHP
PHP实现对站点内容外部链接的过滤方法
Sep 10 PHP
百度实时推送api接口应用示例
Oct 21 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 #PHP
Laravel中任务调度console使用方法小结
May 07 #PHP
Laravel实现表单提交
May 07 #PHP
Laravel实现autoload方法详解
May 07 #PHP
PHP中include和require的区别实例分析
May 07 #PHP
自制PHP框架之设计模式
May 07 #PHP
自制PHP框架之模型与数据库
May 07 #PHP
You might like
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
VBScript版代码高亮
2006/06/26 Javascript
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
Servlet方面面试题
2016/09/28 面试题
商务助理岗位职责
2013/11/13 职场文书
外企办公室竞聘演讲稿
2013/12/29 职场文书
学校招生宣传广告词
2014/03/19 职场文书
班级寄语大全
2014/04/10 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
普通党员对照检查材料
2014/09/24 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
使用Java去实现超市会员管理系统
2022/03/18 Java/Android
以下牛机,你有几个
2022/04/05 无线电
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers