ThinkPHP--模版基础

一.变量输出
在模版中输出变量是非常容易的,使用assign()方法,以键值对的方式传递变量和值。
//给模版传递一个变量
$user=‘新‘;
$this->assign(‘user‘,$user);
在模版中可以这么调用:
{$user}
模版编译后的结果是:
<?phpecho($user);?> //可以在Runtime可以查看
模版标签{和$之间不能用任何空格,否则无法解析。如果你想更换两个{}可以设置:
//修改默认标签
‘TMPL_L_DELIM‘=>‘<{‘,
‘TMPL_R_DELIM‘=>‘}>‘,
调用方式就必须改变:
<{$user}>
如果传递一个数组,我们直接传递过去后,通过两种方式调用:
//给模版传递一个数组
$data[‘user‘]=‘新‘;
$data[‘email‘]=‘[email protected]‘;
$this->assign(‘data‘,$data);
调用方式为:
User:{$data.user}Email:{$data.email}
User:{$data[‘user‘]}Email:{$data[‘email‘]}
如果传递一个对象,我们直接传递过去后,通过两种方式调用:
//给模版传递一个对象
$data=new\stdClass();
$data->user=‘新‘;
$data->email=‘[email protected]‘;
$this->assign(‘data‘,$data);
调用方式为:
User:{$data->user}Email:{$data->email}
User:{$data:user}Email:{$data:email}
二.系统变量
在模版中,不但可以输出PHP的系统变量,还可以输出ThinkPHP的系统变量。
//输出PHP系统变量
{$Think.server.script_name} //$_SERVER[‘SCRIPT_NAME‘]
{$Think.session.admin} //$_SESSION[‘admin‘]
{$Think.get.user} //$_GET[‘user‘]
{$Think.post.user} //$_POST[‘user‘]
{$Think.request.user} //$_REQUEST[‘user‘]
{$Think.cookie.name} //$_COOKIE[‘name‘]
//ThinkPHP的系统变量
{$Think.const.APP_PATH} //目录
{$Think.config.url_model} //URL模式
{$Think.lang.var_error} //语言变量
三.使用函数
如果有时,我们需要在模版中使用PHP函数的话,可以按照下面的格式使用:
{$user|md5}
如果有多个参数要传递,可以参考如下设置:
{$date|date="Y-m-dH:i:s",###}
PS:表示date函数传入两个参数,每个参数用逗号分割,这里第一个参数是Y-m-d
H:i:s,第二个参数是前面要输出的date变量,因为该变量是第二个参数,因此需要用###
标识变量位置,编译后的结果是:
<?phpecho(date($date,"Y-m-dH:i:s"));?>
前面输出变量,在后面定义,则不需要###
{$user|mb_substr=0,3,‘UTF-8‘}
多个函数用"|"隔开即可
{$user|mb_substr=0,3,‘UTF-8‘|md5|sha1}
PS:如果你觉得以上写法需要在脑海里二次翻译,太过于麻烦,那么可以用以下的格
式写法:
{:md5(mb_substr($user,0,3,‘UTF-8‘))}
PS:我个人认为把这些数据处理,都尽可能不要模版端,除非是必须在模版端才能处
理的。因为模版就是为了HTML和JS,然后就是提供数据,不要包含各种过滤和业务逻辑。
当传递过来的变量如果没有值的时候,模版提供了默认值输出功能。
{$user|default=‘什么都没有!‘}
四.使用运算符
我们可以在模版中使用运算符,包括对“+”、“-”、“*”、“/”、“%”、“--”和“++”的
支持。
{$data[‘num‘]+10} //中括号
{$data[‘num‘]+getNum()} //函数
PS:在使用运算符的时候,不再支持语法和常规的函数用法:
{$data.num+10} //错误的
{$data[‘num‘]+getNum} //错误
模版还支持三元运算符:
{$user?‘有值‘:‘无值‘}
五.包含文件
在一个系统中,可以包含通用的头文件和脚文件:header和footer。由于每个页面
的头脚都是相同的,所以需要独立分离出来,再用包含文件引入他们。
我们可以在View目录下default主题目录下创建一个public目录,这个目录专门存
放公共调用模版文件。
<includefile=‘Public/header‘/>
<includefile=‘Public/footer‘/>
也可以调用绝对路径模式:
<includefile=‘./Weibo/Home/View/default/Public/header.tpl‘/>
同时调用多个模版文件:
<includefile=‘Public/header,Public/footer‘/>
六.模版注释
模版支持注释功能,提供个模版制作人员参考。
{//这是注释}
{/*这也是注释*/}
{/*这是
多行注释*/}
七.模版继承
模版继承是一项灵活的模版布局方式,它类似于子类继承父类,然后子类还可以进行适
当的修改以满足当前页面的需要。
//基础模版需要子模版修改的部分可以用<block>包含,并且设置name值
<blockname="main">主要内容</block>
//子模版只要按同样的方法,修改<block>内部的值即可完成修改
<blockname="main">修改了</block>
//创建Public下base.tpl模版基页
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
<blockname="title"><title>{$user}</title></block>
</head>
<body>
<includefile="Public/header"/>
<blockname="main">主要内容</block>
<includefile="Public/footer"/>
</body>
</html>
//使用<extend>导入模版基页,name为路径,和include导入方法一致
<extendname="Public/base"/>
<blockname="main">修改了</block>
八.模版布局
ThinkPHP的模版引擎内置了布局模版功能支持,可以方便实现模版布局以及布局嵌套
功能。有三种布局方式:
1.全局配置方式
//开启模版布局功能,并指定基础页
‘LAYOUT_ON‘=>true,
‘LAYOUT_NAME‘=>‘Public/layout‘, //layout.tpl文件
//基础页,{__CONTENT__}将被子页面的内容替换
<includefile="Public/header"/>
{__CONTENT__}
<includefile="Public/footer"/>
//替换变量可以变更为{__REPLACE__}
‘TMPL_LAYOUT_ITEM‘=>‘{__REPLACE__}‘,
//子模版不需要载入模版基页,可以在开头加上{__NOLAYOUT__}
{__NOLAYOUT__}
2.模版标签方式
标签方式,并不需要在系统做任何配置,和模版继承类似,直接引入即可。
//子模版引入模版基页
<layoutname="Public/layout"/>
//替换变量的方法
<layoutname="Public/layout"replace="{__REPLACE__}"/>
3.layout控制布局
这个方法是在控制器里操作的。
//开启布局,并引入默认地址基页
publicfunctionindex(){
layout(true);
}
//引入指定基页
publicfunctionindex(){
layout(‘Public/layout‘);
//layout(false); //关闭
}
九.模版替换
在模版渲染之前,系统还会对读取的模版内容进行一些特殊字符串替换操作,也就实现
了模版输出的替换和过滤。
__ROOT__:会替换成当前网站的地址(不含域名)
__APP__:会替换成当前应用的URL地址(不含域名)
__MODULE__:会替换成当前模块的URL地址(不含域名)
__CONTROLLER__(或者__URL__兼容考虑):会替换成当前控制器的URL地址(不
含域名)
__ACTION__:会替换成当前操作的URL地址(不含域名)
__SELF__:会替换成当前的页面URL
__PUBLIC__:会被替换成当前网站的公共目录通常是/Public/
‘TMPL_PARSE_STRING‘ =>array(
‘__PUBLIC__‘=>‘/Common‘,//更改默认的/Public替换规则
‘__UPLOAD__‘=>‘/Uploads‘,//增加新的上传路径替换规则
)
PS:__PUBLIC__可以改成--PUBLIC--同样的也可以。

原文地址:https://www.cnblogs.com/panpy/p/8319553.html

时间: 2024-10-16 18:48:28

ThinkPHP--模版基础的相关文章

thinkphp模版调用函数方法

原文:thinkphp模版调用函数方法 {变量|函数1|函数2|函数3=参数1,参数2,参数3,###} ###为第4个参数,代表变量替换为第4个参数 举例: {$username|substr=0,3}取标题中前3个字符 {$times|date='Y-m-d H:i:s',###}将times时间戳转换为日期格式 ================================================== 冒号执行函数的用法:输出方法并执行返回值 {:U('user/insert')

ThinkPHP模版引擎之变量输出具体解释

ThinkPHP模版引擎之变量输出具体解释 使用ThinkPHP开发有一定时间了,今日对ThinkPHP的模板引擎变量解析深入了解了一下.做出一些总结,分享给大家供大家參考. 详细分析例如以下: 我们已经知道了在Action中使用assign方法能够给模板变量赋值,赋值后怎么在模板文件里输出变量的值呢? 假设我们在Action中赋值了一个name模板变量: $name = 'ThinkPHP'; $this->assign('name',$name); 使用内置的模板引擎输出变量,仅仅须要在模版

ThinkPHP模版引擎之变量输出详解

ThinkPHP模版引擎之变量输出详解 使用ThinkPHP开发有一定时间了,今日对ThinkPHP的模板引擎变量解析深入了解了一下,做出一些总结,分享给大家供大家参考.具体分析如下: 我们已经知道了在Action中使用assign方法可以给模板变量赋值,赋值后怎么在模板文件中输出变量的值呢? 如果我们在Action中赋值了一个name模板变量: $name = 'ThinkPHP'; $this->assign('name',$name); 使用内置的模板引擎输出变量,只需要在模版文件使用:

thinkphp模版使用技巧 -Thinkphp兄弟连19

thinkphp模版使用技巧 第19节:ThinkPHP 3.1.2 模板变量详解 一.模版包含:相似代码单独保存在一个文件 <include file="完整模版文件路径/" thinkphp模版使用技巧 -Thinkphp兄弟连19

Thinkphp 框架基础

ThinkPHP 一.php框架介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳定的运行阶段 项目停止运行(旧项目的人员已经全部离职,新人开发新项目) 问题: 1. 多人开发项目,分工不合理,(html   php   mysql) 2. 代码风格不一样,后期维护十分困难 3. 项目生命周期十分短,项目生命没有延续性,造成资源浪费.人员浪费

Thinkphp 模版

1.显示模版 在Home/Controller/MainController.class.php中写一个方法来显示对应的模版 function text() { //变量输出 $this->assign("text","Hello"); $attr=array("one"=>100,"two"=>200); $this->assign("shuzu",$attr); //使用运算符,

模版基础[1]

ThinkPHP 内置了一个基于 XML 的性能卓越的模版引擎 ThinkTemplate, 使用了动态编译和缓存技术,支持自定义标签库. 一. 变量输出 在模版中输出变量是非常容易的,使用 assign()方法,以键值对的方式传递变量和值. 在 Home/controller/UserController.class.php 中输入以下代码: 1 class UserController extends Controller { 2 public function index() { 3 $u

模版基础[2]

一.包含文件 在一个系统中,可以包含通用的头文件和脚文件:header 和 footer.由于每个页面的头脚都是相同的,所以需要独立分离出来,再用包含文件引入他们.我们可以在 View 目录下 default 主题目录下创建一个 public 目录,这个目录专门存放公共调用模版文件. 我们在 View/default/User/index.html 写入的代码为: 1 <include file="Public/header" /> 2 3 这里是内容 4 5 <in

T4模版基础例子

<#@ template debug="false" hostspecific="true" language="C#" #> <#@ assembly name="System.Core" #> <#@ assembly name="EnvDTE" #> <#@ import namespace="System.Linq" #> <

ThinkPHP框架基础回顾

首先,我们必须要知道的就是目录结构: 我们把解压完成之后会出现以下的目录: 这是tp官方的手册目录解释,我们可以先不要去看其他的文件,这里,我们主要用到的就是php的核心库ThinkPHP框架目录: 然后在这个非常主要的目录下面,又有如下的文件目录对我们是同样的重要: 这个就是tp的核心目录了,接下来就是关于入口文件了,显而易见,这个入口文件就比zend框架的入口文件好找多了,那么这个入口文件其实在解压目录的表面就已经给我们了,我们可以直接使用它,当然也可以自己去写,就是那个index的文件,千