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 has encountered an Access Violation
Jan 15 PHP
php中定义网站根目录的常用方法
Aug 08 PHP
php判断变量类型常用方法
Apr 24 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
PHP+ajax分页实例简析
Dec 07 PHP
详解Window7 下开发php扩展
Dec 31 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
php数组指针操作详解
Feb 14 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
关于php fread()使用技巧
2010/01/22 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
jquery对表单操作2
2011/04/06 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
python+opencv实现动态物体识别
2018/01/09 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
机械制造与自动化应届生求职信
2013/11/16 职场文书
体育老师的教学自我评价分享
2013/11/19 职场文书
教师的实习自我鉴定
2013/12/17 职场文书
门店业绩提升方案
2014/06/08 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
英文辞职信范文
2015/05/13 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript