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 相关文章推荐
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
用libtemplate实现静态网页生成
Oct 09 PHP
php 设计模式之 单例模式
Dec 19 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
PHP获取文件的MD5值并判断是否被修改的例子
Jun 19 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
Jul 29 PHP
PHP中读取照片exif信息的方法
Aug 20 PHP
实现PHP+Mysql无限分类的方法汇总
Mar 02 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
Oct 09 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
php 无限级分类 获取顶级分类ID
Mar 13 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 PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
php中cookie的使用方法
2014/03/29 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
php文件包含的几种方式总结
2019/09/19 PHP
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
python实现360皮肤按钮控件示例
2014/02/21 Python
python中的多线程实例教程
2014/08/27 Python
详解Python爬虫的基本写法
2016/01/08 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
一套Java笔试题
2016/08/20 面试题
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
办公室主任个人总结
2015/02/28 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
公司捐书倡议书
2015/04/27 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js