ThinkPHP 模板引擎使用详解

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> //判断数据是否不为空 不为空则执行
(0)

相关推荐

  • ThinkPHP在Cli模式下使用模板引擎的方法

    本文实例讲述了ThinkPHP在Cli模式下使用模板引擎的方法.分享给大家供大家参考.具体如下: 关于Cli模式与模版引擎,2.1中的手册是这样说明的: Cli模式默认不使用任何模板引擎(可以自己在操作方法里面调用): 但是怎么调用,手册中没有提到.于是自己动手丰衣足食. 在介绍怎么调用之前,简单的说说什么情况可能需要用到模块引擎: 1. 利用dompdf在计划任务自动生成PDF或HTML报告 2. 计划任务发送HTML类型的邮件 3. 后台自动生成静态页面 4. 其他关于模板的后台操作 <?p

  • thinkPHP模板引擎用法示例

    本文实例讲述了thinkPHP模板引擎用法.分享给大家供大家参考,具体如下: 1.if <if condition="$vo.business eq LS"> 零售 <elseif condition="$vo.business eq CY" /> 餐饮 <else /> 其他 </if> 编译后 <?php if ($vo["business"] == LS): ?>零售 <?p

  • 让ThinkPHP的模板引擎达到最佳效率的方法详解

    本文分析了让ThinkPHP的模板引擎达到最佳效率的方法.分享给大家供大家参考,具体如下: 默认情况下ThinkPHP框架系统默认使用的模板引擎是内置模板引擎.内置模板引擎支持模板文件中采用php原生态代码和模板标签的混合使用. ThinkPHP官方开发文档说,这种默认的内置模板引擎的性能是高效的,但还不是最佳的.要使模板引擎的性能达到最佳效率,就要使用PHP本身作为模板引擎. 使用PHP本身作为模板引擎其实很简单,只需在项目的配置文件Conf/config.php上配置: 'TMPL_ENGI

  • ThinkPHP模板引擎之导入资源文件方法详解

    一般而言,网页传统方式的导入外部JS和CSS等资源文件的方法是直接在模板文件使用: <script type='text/javascript' src='/Public/Js/Util/Array.js'> <link rel="stylesheet" type="text/css" href="/App/Tpl/default/Public/css/style.css" /> ThinkPHP的模板引擎提供了专门的标签

  • ThinkPHP使用smarty模板引擎的方法

    ThinkPHP支持多种php模板引擎,可以根据个人需要加以配置. 下面我们以Smarty模板引擎为例,给大家说说具体的操作流程! 首先去Smarty官网上下载一个Smarty.本站下载地址:http://www.jb51.net/codes/16086.html. 接下来解压压缩包,会有两个文件夹:demo和libs.打开libs文件夹,复制所有内容. 接下来,打开你网站根目录 下thinkphp的文件夹.里面有个vendor文件夹,这个文件夹是TP调用第三方类库用的,把刚才复制的东西全部粘贴

  • ThinkPHP 模板引擎使用详解

    ThinkPHP 内置的模板引擎来定义模板文件,以及使用加载文件.模板布局和模板继承等高级功能. 每个模板文件在执行过程中都会生成一个编译后的缓存文件,其实就是一个可以运行的 PHP 文件. 引用自 http://www.kancloud.cn/manual/thinkphp5/118122 PHP /*index/controller/example.php*/ use think\Controller; class test extends Index { public function t

  • Laravel中的Blade模板引擎示例详解

    前言 本文主要给大家介绍了关于Laravel中Blade模板引擎的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍吧. Blade 模板引擎 Blade 是 laravel 提供的一个简单强大的模板引擎,它是把 Blade 视图编译成原生的 PHP 代码并缓存起来.缓存会在 Blade 视图改变时而改变,这意味着 Blade 并没有给你的应用添加编译的负担.Blade 视图文件使用 .blade.php 后缀,一般都存储在 resources/views 目录下. 模板继承 先

  • template.js前端模板引擎使用详解

    本文介绍了template.js前端模板引擎使用,分享给大家,具体如下: 下载地址:https://github.com/yanhaijing/template.js 作者编写的文档:https://github.com/yanhaijing/template.js/blob/master/README.md 源码学习 默认的开始标签和结束标签分别是: sTag: '<%',//开始标签,可以重写,我项目中使用的是<: eTag: '%>',//结束标签,我项目中使用的是:> 快速

  • 只有 20 行的 JavaScript 模板引擎实例详解

    本文实例讲述了 JavaScript 模板引擎.分享给大家供大家参考,具体如下: 原文链接:JavaScript template engine in just 20 lines (译者吐槽:只收藏不点赞都是耍流氓) 前言 我仍旧在为我的JS预处理器AbsurdJS进行开发工作.它原本是一个CSS预处理器,但之后它扩展成为了CSS/HTML预处理器,很快它将支持JS到CSS/HTML的转换.它就像一个模板引擎一样能够生成HTML代码,也就是说它能够用数据填充模板当中的标识片段. 因此,我希望去写

  • vue模板语法-插值详解

    1.文本 数据绑定最常见的形式就是使用'Mustache'语法(双打括号)的文本插值: <span>message:{{msg}}</span> 使用v-once指令,也能执行一次性的插值,当主句改变时,插值处的内容不会更新. 但请留心这回影响到该节点上所有的数据绑定: <span v-once>this will nver change:{{message}}</span> 2.纯html 双打括号会将数据解释为纯文本,而非html.为了输出html可以使

  • Go模板template用法详解

    本文只介绍template的语法和用法,关于template包的函数.方法.template的结构和原理,见:深入解析Go template模板使用详解. 入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-

  • 微信小程序富文本渲染引擎的详解

    微信小程序富文本渲染引擎的详解 步骤 把 wxParser 目录放到小程序项目的根目录下 在需要富文本解析的 WXML 内引入 wxParser/index.wxml 在页面 JS 文件内使用 wxParser.parse(options) 方法解析 HTML 内容 在小程序项目根目录的 app.wxss 内引入 wxParser 的默认样式库 wxParser.parse(options) 方法的 options 参数说明 参数名 类型 必填 描述 bind String 是 要绑定的数据名称

  • Android开发之Android.mk模板的实例详解

    Android开发之Android.mk模板的实例详解 关于Android NDK开发的文章已经比较多了,我的博客中也分享了很多NDK开发相关经验和技巧,今天简单写了一个 Android.mk 的示例模板,供初学者参考. 本模板主要给大家示例 Android NDK 开发中的如下几个问题: 1. 如何自动添加需要编译的源文件列表   2. 如何添加第三方静态库.动态库的依赖   3. 如何构造一个完整的NDK工程框架 假设我们的项目依赖 libmath.a, libjson.a, libffmp

  • 对Pycharm创建py文件时自定义头部模板的方法详解

    如下所示: # -*- coding: utf-8 -*- """ ------------------------------------------------- File Name: ${NAME} Description : Author : ${USER} date: ${DATE} ------------------------------------------------- Change Activity: ${DATE}: ----------------

随机推荐