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 相关文章推荐
Mysql的常用命令
Oct 09 PHP
第十节--抽象方法和抽象类
Nov 16 PHP
PHP Document 代码注释规范
Apr 13 PHP
解析php中const与define的应用区别
Jun 18 PHP
php 不使用js实现页面跳转
Feb 11 PHP
PHP获取本周第一天和最后一天示例代码
Feb 24 PHP
php小技巧之过滤ascii控制字符
May 14 PHP
ThinkPHP模板判断输出Defined标签用法详解
Jun 30 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
PHP实现通用alert函数的方法
Mar 11 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
php求数组全排列,元素所有组合的方法
May 05 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基于DOM创建xml文档的方法示例
2017/02/08 PHP
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
vue实现分页栏效果
2019/06/28 Javascript
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
详解Python多线程
2016/11/14 Python
wxpython实现图书管理系统
2018/03/12 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
大学生自我鉴定
2013/12/08 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
环保倡议书范文
2014/05/12 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏