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
php 文本文件的读取效率
Feb 10 PHP
PHP删除数组中特定元素的两种方法
Jul 02 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
php绘制一条弧线的方法
Jan 24 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
php实现图片缩略图的方法
Mar 29 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 PHP
php变量与字符串的增删改查操作示例
May 07 PHP
PHP实现本地图片转base64格式并上传
May 29 PHP
PHP实现简易用户登录系统
Jul 10 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面向对象分析设计的61条军规小结
2010/07/17 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
token 机制和实现方式
2020/12/15 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
python使用KNN算法识别手写数字
2019/04/25 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
基于python实现从尾到头打印链表
2019/11/02 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
h5封装下拉刷新
2020/08/25 HTML / CSS
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
自我鉴定书范文
2013/10/02 职场文书
英文简历中的自我评价
2013/10/06 职场文书
会计电算化应届生求职信
2013/11/03 职场文书
外贸销售员求职的自我评价
2013/11/23 职场文书
基层工作经历证明
2014/01/13 职场文书
学校四群教育实施方案
2014/06/12 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
机械生产实习心得体会
2016/01/22 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
golang slice元素去重操作
2021/04/30 Golang
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题