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之第七天
Oct 09 PHP
smarty实例教程
Nov 19 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
二招解决php乱码问题
Mar 25 PHP
深入密码加salt原理的分析
Jun 06 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
php用户注册页面利用js进行表单验证具体实例
Oct 17 PHP
php常用的url处理函数总结
Nov 19 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
Jun 12 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
Oct 15 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
德劲1103的维修打理经验
2021/03/02 无线电
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
自己前几天写的无限分类类
2007/02/14 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
javascript实现留言板功能
2020/02/08 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
Python import与from import使用及区别介绍
2018/09/06 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
工业自动化毕业生自荐信范文
2014/01/04 职场文书
离婚起诉书范本
2015/05/18 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
php png失真的原因及解决办法
2021/11/17 PHP