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和ACCESS写聊天室(八)
Oct 09 PHP
function.inc.php超越php
Dec 09 PHP
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
PHP随机数生成代码与使用实例分析
Apr 08 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
pdo中使用参数化查询sql
Aug 11 PHP
PHP mysql与mysqli事务使用说明 分享
Aug 17 PHP
php中eval函数的危害与正确禁用方法
Jun 30 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
PHP计算近1年的所有月份
Mar 13 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 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小偷的核心程序
2007/04/09 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
jQuery实现可以扩展的日历
2020/12/01 jQuery
Python用模块pytz来转换时区
2016/08/19 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
青年文明号服务承诺
2014/03/31 职场文书
个人综合鉴定材料
2014/05/23 职场文书
天坛导游词
2015/02/02 职场文书
色戒观后感
2015/06/12 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL