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 PDO函数库详解
Apr 27 PHP
PHP foreach循环使用详解与实例代码
May 08 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
PHP 等比例缩放图片详解及实例代码
Sep 18 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP实现文件上传与下载
Aug 28 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 14 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面向对象全攻略 (五) 封装性
2009/09/30 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
JQuery选择器特辑 详细小结
2012/05/14 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
JS中数组重排序方法
2016/11/11 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
详解Vue之计算属性
2020/06/20 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
Python中Random和Math模块学习笔记
2015/05/18 Python
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
详解python datetime模块
2020/08/17 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
C#面试题
2016/05/06 面试题
实习自我鉴定范文
2013/10/30 职场文书
区三好学生主要事迹
2014/01/30 职场文书
综治工作汇报材料
2014/10/27 职场文书
管理失职检讨书范文
2015/05/05 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
Python图片检索之以图搜图
2021/05/31 Python
解析python中的jsonpath 提取器
2022/01/18 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技