Thinkphp模板简单入门
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 标签库。
重点学习内置标签:

这个表很好懂了,里面的执行细节都用属性来代替。还是抛个链接吧,深入学习。
参考:
-end-
Thinkphp模板简单入门的更多相关文章
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- 【Ecmall】ECMall2.x模板制作入门系列(认识ECMall模板)
ECMall2.x模板制作入门系列之1(认识ECMall模板) 从ECMall2.0全新架构发布以来,随着版本的不断更新,ECMall已经逐渐走向一个稳定时期,是时候整理一些实用教程了.下面给大家带来 ...
- (转) ThinkPHP模板自定义标签使用方法
这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下 转之--http://www.jb51.net/article/51584.htm 使用模板标签可以让网站前台开发 ...
- springboot 学习之路 1(简单入门)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- Vue的简单入门
Vue的简单入门 一.什么是Vue? vue.js也一个渐进式JavaScript框架,可以独立完成前后端分离式web项目 渐进式:vue可以从小到控制页面中的一个变量后到页面中一块内容再到整个页面, ...
- Python 简单入门指北(二)
Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...
- Python 简单入门指北(一)
Python 简单入门指北(一) Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫.但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑 ...
- [转]Scrapy简单入门及实例讲解
Scrapy简单入门及实例讲解 中文文档: http://scrapy-chs.readthedocs.io/zh_CN/0.24/ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用 ...
- Bootstrap简单入门
Bootstrap简单入门 BootStrap基本模板 <!DOCTYPE html> <html> <head> <meta charset="U ...
随机推荐
- CUDA随机数生成库curand——deviceAPI
原创作品,如要转载请注明出处:http://www.cnblogs.com/shrimp-can/p/6590152.html 最近要在device函数中使用curand库生成随机数,查找了下资料,除 ...
- 手动es6编译es5(命令行)
package.json:"devDependencies": { "babel-cli": "^6.18.0", "babel- ...
- java入门了解02
1:JDK,JRE,JVM的作用关系 (一)作用 JVM:提供java跨平台 JRE:java运行环境 JDK:java开发环境 ...
- Hibernate基础学习(五)—对象-关系映射(下)
一.单向n-1 单向n-1关联只需从n的一端可以访问1的一端. 域模型: 从Order到Customer的多对一单向关联.Order类中定义一个Customer属性,而在Customer类不用存放Or ...
- mysql视图 更新中的问题
mysql view 类型 mysql的视图有三种类型:merge.temptable.undefined.如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的). 算法会影响MyS ...
- VS窗体选择BackGroupImage属性报错:已添加具有相同键的项
高墙我今天第一次遇见这个问题.既然说是"已添加具有相同键的项."那我自然地认为会不会是文件夹哪里命名了两个相同的文件名.然后在这个Exception上越走越远. 好了不说废话.出现 ...
- JavaScript编码解码以及C#中的编码解码
JS: 编码 解码 escape unescape encodeURI decodeURI encodeURIComponent decodeURIComponent C#: HttpUtilit ...
- Visual Studio中的TabControl控件的用法
今天遇到了一个自己没遇到过的控件TabControl控件,所以找了点关于它的资料 TabControl属性 DisplayRect:只定该控件客户区的一个矩形 HotTrack:设置当鼠标经过页标签 ...
- 服务器上的Git
前面的话 如果想与他人使用,除了使用Git来完成日常工作之外,还需要一个远程的Git仓库.尽管从技术上可以从个人的仓库里推送和拉取修改内容,但并不鼓励这样做,因为一不留心就很容易弄混其他人的进度.因此 ...
- 自动生成数学题型一 (框架Struts2) 题型如(a+b=c)
1. 加减乘除 1.1 随机生成制定范围的整数 /** * 随机产生一个被限定范围的整数 * * @param num1 * 定义起始范围 num1 * @param num2 * 定义终止范围 nu ...