Thinkphp模板概述

ThinkPHP内置了一个基于XML的性能卓越的模板引擎,这是一个专门为ThinkPHP服务的内置模板引擎,使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。

Thinkphp内置模板有哪些优点

官方枚举了许多,我比较关注的是:

  • 支持文件包含
  • 一次编译多次运行,编译和运行效率非常高(官方用语)
  • 模板文件和布局模板更新,自动更新模板缓存

文件包含很重要,可以重复利用html代码,如head和最后的script等。

模板毕竟比原生代码效率低,缓存是有必要的,而改动模板会自动更新模板缓存,这一点是缓解程序员关注的焦点。

标签库暂时用不到,这么折腾的东西。。。

其他的没列举的优点,一般是个模板引擎都会有吧,如果是个引擎的话。

如何调用模板?

有变量要传递的话先 $view->assign('data',$data);

然后在控制器中最后调用 return $view->fetch();

会自动调用 [模板文件目录]/当前控制器名(小写+下划线)/当前操作名(小写).html 相应的模板文件。

可以指定,规则为 模块 @控制器/操作,如:return $view->fetch('admin@user/add');

或干脆来个全路径:return $view->fetch(APP_PATH.request()->module().'/view/public/header.html');

官方还搞了标签的分类,在我看了是没必要的,用的时候统一一点好,不要太人格分裂。

XML标签 主要完成一些逻辑判断、控制和循环输出,并且可扩展
普通标签 主要用于输出变量和做一些基本的操作

当然,标签可以配置,找找config.php吧。

常用输出例子

Hello,{$name}! //普通变量
Name:{$data.name} //数组
Name:{$data['name']} //数组
Name:{$data:name} //对象
Name:{$data->name} //对象
{$Think.session.user_id} //系统变量$_SESSION['user_id']
{$Think.APP_PATH} //常量
{$Think.config.default_module} //配置
{$Think.lang.page_error} //语言变量,顾名思义
{$user.nickname|default="这家伙很懒,还是留下了点什么"} //默认值

{$Request.get.id} //$Request类应用:$Request.方法名.参数
{$data.name|md5} //md5($data['name'])
{$data.name|substr=0,3} //substr($data['name'],0,3)
{$name|md5|strtoupper|substr=0,3} //大杂烩 substr(strtoupper(md5($name)),0,3))
{:substr(strtoupper(md5($name)),0,3)} //上面都可以改为这种直观写法,注意':'

运算符 ,直接截图:

三元运算符:{$status? '正常' : '错误'}

有一些有趣的写法,不建议挖坑。

如何原样输出

用literal标签,运营场景:可以用于页面的JS代码外层,确保JS代码中的某些用法和模板引擎不产生混淆。

如果乱搞的话,有一些注意事项,查文档去吧。

模板布局

第一种方式:全局配置方式: 去config.php配置一下,关键字:layout

第二种方式:模板标签方式:举个栗子:{layout name="layout" /}

第三种方式:使用layout控制模板布局: 在渲染之前(退出控制器前),$this->view->engine->layout('Layout/newlayout');

说明:

开启layout_on后,模板渲染流程就有所变化,在不开启layout_on布局模板之前,会直接渲染指定模板;开启之后,会先解析指定模板,并把解析后的内容替换到layout布局模板文件的{CONTENT}(可自定义)特定字符串,再做渲染。

进阶:看看模板继承

包含文件,使用{include file='模版文件1,模版文件2,...' title="$title" keywords="开源WEB开发框架"/}

标签库

了解一下(功能很强大):

标签库类似于Java的Struts中的JSP标签库,每一个标签库是一个独立的标签库文件,标签库中的每一个标

签完成某个功能,采用XML标签方式(包括开放标签和闭合标签)。

标签库分为内置和扩展标签库,内置标签库是 Cx 标签库。

重点学习内置标签

这个表很好懂了,里面的执行细节都用属性来代替。还是抛个链接吧,深入学习。

参考:

模板 http://www.kancloud.cn/manual/thinkphp5/118122

-end-

Thinkphp模板简单入门的更多相关文章

  1. Springmvc整合tiles框架简单入门示例(maven)

    Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...

  2. 【Ecmall】ECMall2.x模板制作入门系列(认识ECMall模板)

    ECMall2.x模板制作入门系列之1(认识ECMall模板) 从ECMall2.0全新架构发布以来,随着版本的不断更新,ECMall已经逐渐走向一个稳定时期,是时候整理一些实用教程了.下面给大家带来 ...

  3. (转) ThinkPHP模板自定义标签使用方法

    这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下  转之--http://www.jb51.net/article/51584.htm   使用模板标签可以让网站前台开发 ...

  4. springboot 学习之路 1(简单入门)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  5. Vue的简单入门

    Vue的简单入门 一.什么是Vue? vue.js也一个渐进式JavaScript框架,可以独立完成前后端分离式web项目 渐进式:vue可以从小到控制页面中的一个变量后到页面中一块内容再到整个页面, ...

  6. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

  7. Python 简单入门指北(一)

    Python 简单入门指北(一) Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫.但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑 ...

  8. [转]Scrapy简单入门及实例讲解

    Scrapy简单入门及实例讲解 中文文档:   http://scrapy-chs.readthedocs.io/zh_CN/0.24/ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用 ...

  9. Bootstrap简单入门

    Bootstrap简单入门 BootStrap基本模板 <!DOCTYPE html> <html> <head> <meta charset="U ...

随机推荐

  1. sass学习笔记 -- sass的四种编译方法

    sass的四种编译方法:(.scss) (一)ruby下的命令行编译 首先需要安装ruby,注意需勾选Add Ruby executables to your PATH选项,以添加环境变量. ruby ...

  2. nmap安装过程

    nmap是一个网络扫描和主机检测工具. 功能:1.扫描目标主机开放的端口 2.扫描目标主机特定端口是否关闭 3.路由跟踪(到目标主机所经过的网络节点及其通过时间) 4.扫描一个网段下的所有IP 5.探 ...

  3. (转)CentoS 下报的 Requires: perl(:MODULE_COMPAT_5.8.8)

    vim /etc/yum.repos.d/epel.repo 把 mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5& ...

  4. javascript 数组的部分常用属性用法

    数组 检测数组(返回布尔类型 a. instanceof(); 检测是否是数组对象 console.log(arr instanceof Array) ; b. Array.isArray() ,H5 ...

  5. MYSQL性能优化--分库分表

    1.分库分表 1>纵向分表 将本来可以在同一个表的内容,人为划分为多个表.(所谓的本来,是指按照关系型数据库的第三范式要求,是应该在同一个表的.) 分表理由:根据数据的活跃度进行分离,(因为不同 ...

  6. Meta http-equiv属性详解

    http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变 ...

  7. QT Creator 快速入门教程 读书笔记(三)

    一   信号和槽 GUI 程序除了要绘制控件,还要响应系统和用户事件,例如重绘.绘制完成.点击鼠标.敲击键盘等.当事件发生时,UI 会产生相应的变化,让用户直观地看到. 大部分编程(例如Win SDK ...

  8. 第3章Zabbix完整监控

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; t ...

  9. https证书申请流程和简介

    HTTPS证书是什么 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安 ...

  10. 通过php动态传数据到highcharts

    1:在平时工作中,在对数据进行展示的时候,是直接通过后台提供的接口来获取json串,用来展示.今天别人问怎么在本地演示一下请求的动态数据. 2:在本地搭建环境,我用的WampServer,下载地址:h ...