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者的疑难问答(1)
Oct 09 PHP
生成php程序的php代码
Apr 07 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
PHP简单处理表单输入的特殊字符的方法
Feb 03 PHP
PHPExcel 修改已存在Excel的方法
May 03 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
php实现大文件断点续传下载实例代码
Oct 01 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 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仿ZOL分页类代码
2008/10/02 PHP
php中explode与split的区别介绍
2012/10/03 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
python遍历类中所有成员的方法
2015/03/18 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
Python3进制之间的转换代码实例
2019/08/24 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
中专毕业生求职简历的自我评价
2013/10/21 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python