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 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
PHP中,文件上传
Dec 06 PHP
PHP缓存技术的使用说明
Aug 06 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
初识PHP
Sep 28 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
PHP自毁程序(慎用)
Jul 09 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
php分页查询的简单实现代码
Mar 14 PHP
php安全配置记录和常见错误梳理(总结)
Mar 28 PHP
php取出数组单个值的方法
Mar 12 PHP
Laravel 添加多语言提示信息的方法
Sep 29 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写的资源下载防盗链类分享
2014/05/12 PHP
php命令行用法入门实例教程
2014/10/27 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
CSS常用网站布局实例
2008/04/03 Javascript
jQuery的三种$()
2009/12/30 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python实现挑选出来100以内的质数
2015/03/24 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
教师实习自我鉴定
2013/12/13 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
历史学专业求职信
2014/06/19 职场文书
车辆年审委托书范本
2014/09/18 职场文书
怎样写辞职信
2015/02/27 职场文书
毕业设计致谢词
2015/05/14 职场文书
Django基础CBV装饰器和中间件
2022/03/22 Python