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语法(4)
Oct 09 PHP
echo, print, printf 和 sprintf 区别
Dec 06 PHP
php URL编码解码函数代码
Mar 10 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
php解析json数据实例
Aug 19 PHP
PHP检测字符串是否为UTF8编码的常用方法
Nov 21 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
PHP操作Postgresql封装类与应用完整实例
Apr 24 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
php优化查询foreach代码实例讲解
Mar 24 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 过滤器实现代码
2010/08/09 PHP
php实现json编码的方法
2015/07/30 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
实例讲解PHP表单处理
2019/02/15 PHP
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
python实现批量命名照片
2020/06/18 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
职工运动会邀请函
2014/02/02 职场文书
个人实习生的自我评价
2014/02/16 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
党风廉正建设责任书
2015/01/29 职场文书
安徽导游词
2015/02/12 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
十八大观后感
2015/06/12 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
Mysql基础之常见函数
2021/04/22 MySQL
pandas求平均数和中位数的方法实例
2021/08/04 Python