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 ...
随机推荐
- 时间相关库<ctime>解析
原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5649487.html 一.定义的类型 1.clock_t:时钟类型 2.size_t:unsign ...
- java之泛型解说
1.集合中只能装入引用数据类型,不能装入基本数据类型.如,装入int类型的数值123会自动装箱. 2.开发人员装入集合的数据类型不确定,所以它被设计成可以装入所有的Object. 3.新的问题产生,装 ...
- ACdream 1112 Alice and Bob (sg函数的变形+素数筛)
题意:有N个数,Alice 和 Bob 轮流对这些数进行操作,若一个数 n=a*b且a>1,b>1,可以将该数变成 a 和 b 两个数: 或者可以减少为a或b,Alice先,问谁能赢 思路 ...
- ElasticSearch 基本概念
Elasticsearch是一个接近实时的搜索平台,就是说从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟,通常是一秒钟 集群 一个集群通常有一个或多个elasticsearch节点组成,给这些 ...
- css定位流布局
上面我们一起研究了浮动布局的特点和如何清除浮动给布局带来的不良影响,今天我们继续来研究定位流布局的特点和一些常用的布局技巧. 定位流主要有三种,一是相对定位,二是绝对定位,三是固定定位:下面我们一一进 ...
- HNOI2017前被虐记及感悟
本文所记录的时间以HNOI2017第一天考试时间为DAY1,前一天为DAY0,以此类推. 本文记载了博主从HNOI2017开始前一周进行全真模拟考试的被虐过程和结果.文章内可能包含博主的不良情绪,如果 ...
- onclick = xxx这种赋值写法绑定事件的原理是什么?
本文转自知乎貘吃馍香的回答 提问:刚入门不久,能力有限,这个问题我描述起来有点困难,只有劳烦各位大神细看了 我之前一直以为js底层存在类似下面这样的代码: //给所有dom对象定义好onclick值为 ...
- druid 连接kafuk
java -Xmx256m -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Ddruid.realtime.specFile=examples/indexing/ ...
- win8.1启用ahci后蓝屏
先简单介绍一下,本应该win7开始,系统安装的时候默认就启用了ahci硬盘模式.但是博主犯了傻,装了win8.1后安装win XP形成双系统.xp并不支持ahci模式,所以将硬盘模式改成了IDE模式, ...
- php 启动过程 - sapi MSHUTDOWN 过程
php 启动过程 - sapi MSHUTDOWN 过程 概述 当服务器关闭时, 会走到 sapi MSHUTDOWN 过程 注册过程 本次内容是在 php 启动过程 - sapi MINIT 过程 ...