ThinkPHP(6)——模板技术

原创 2016年05月30日 22:46:45

创建模板

在如下图所示目录中建立html

这里写图片描述

然后在Index控制器的index方法中,调用模板

这里写图片描述

那么当你访问/Index/index时就会显示index.html。

如果你不想要模板和方法同名,你可以在display方法中跟上模板名称即可。如下图:

这里写图片描述

赋值与输出

两种方式赋值

class IndexController extends Controller {
    public function index(){
        //两种赋值方式
        $this->name = 'tom';
        $this->assign('age',10);

        $this->display();

    }

}

我们可以使用php进行输出变量

<?php 
    echo $name;
    echo $age;
?>

也可以通过模板技术直接输出变量

$me['name'] = 'tom';
$me['age'] = 10;
$this->assign('me',$me);
$this->display();
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
{$me['name']}
{$me.name}
{$me.sex | default='男'}
</body>
</html>

如上所示,如果变量不存在,可以使用default给一个默认值

注释

在模板中,也是使用//进行注释,如:
{//$name}

运算

在模板中

{$me['age']+1}

注意,涉及到运算时,数组变量不能用$me.age这种形式,只能用$me['age']

调用函数

如在模板中,对变量调用md5函数进行加密

{$me.name|md5}

如果要连续调用多个函数,使用|隔开,如md5加密后进行截取

调用方法使用=号指定参数,多个参数用逗号隔开

{$me.name|md5|substr=0,5}

再如:

$this->date = time();

在php中,date方法调用是这样的:

$time = time();
date('Y-m-d H:i:s',$time);

在模板中,我们使用三个#号来表示变量本身作为调用方法的参数

{$date|date='Y-m-d H:i:s',###}

ThinkPHP自带的系统变量

在模板中,ThinkPHP为我们内置了一些系统变量,例如:

变量 说明
{$Think.now} 时间
{$Think.version} 版本
{$Think.server.http_host} http请求主机

循环

定义数组

$person = array(
     1=>array('name'=>'tom','age'=>'10'),
     2=>array('name'=>'jack','age'=>'12'),
     3=>array('name'=>'jane','age'=>'13'),
     4=>array('name'=>'mike','age'=>'15'),
 );
 $this->assign('person',$person);
 $this->display();

volist标签

volist标签中:

  1. name :表示模板赋值的变量名
  2. id :表示当前循环变量
  3. offset :表示从第n条数据开始循环
  4. length :表示数据n条数据
  5. empty :当数据为空时输出的内容
<volist name='person' id='p' offset='<0></0>' length='5' empty='no data'>
{$p['name']}==={$p['age']}<br>
</volist>

foreach标签

key表示索引,从1开始

<foreach name='person' item='p' key='k'>
{$k}=={$p['name']}==={$p['age']}<br>
</foreach>

for循环

<for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" >
</for>

循环变量名默认为i

例如:

<for start="1" end="100" comparison="elt">
{$i}
</for>

comparison取值说明:

英文缩写 对应的符号
eq =
neq !=
gt >
egt >=
lt <
elt <=
heq ===
nheq !==

判断

if标签

<if condition="($name eq 1) OR ($name gt 100) "> value1
<elseif condition="$name eq 2"/>value2
<else /> value3
</if>

switch标签

<switch name="User.level">    
    <case value="1">value1</case>    
    <case value="2">value2</case>    
    <default />default
</switch>

case如果有多个条件,使用|分割,如

 <case value="gif|png|jpg">图像格式</case>

case标签还有一个break属性,表示是否需要break,默认是会自动添加break,如果不要break,可以使用:

 <case value="1" break="0">admin</case>

也可以对case的value属性使用变量,例如:

 <case value="$adminId">admin</case>

比较标签

判断status是否等于1

<eq name="status" value="1 >
正常
</eq>

判断status不等于1

<neq name="status" value="1 >
不正常
</neq>

以上两种可以合起来写

<eq name="status" value="1 >
正常
<else />不正常
</eq>

同理,lt,gt等也是一样的用法

也可以使用compare

<compare name="name" value="5" type="eq">
value
<else /> value2
</compare>

区间标签

in和notin

<in name="id" value="1,2,3">
id在范围内
<else/>id不在范围内
</in>

也可是使用变量

<in name="id" value="$range">
id在范围内
</in>

notin用法和in一模一样

between和 notbetween

<between name="id" value="1,10">输出内容1</between>

notbetween用法也是一样

RANGE

<range name="id" value="1,2,3" type="in">输出内容1</range>

三元运算符

模板中的三元运算符和php中一模一样

{$status?'正常':'错误'}
{$num>10?'大于':'小于'}

<php>

在模板中,thinkphp官方推荐使用

<php>echo 'hehe';</php>

来替代

<? php
版权声明:本文为博主原创文章,未经博主允许不得转载。

thinkphp if标签比较标签

thinkPHP 特定的比较标签 eq 等于(==) neq 不等于(!=) gt 大于(>) egt 大于等于(>=) lt 小于( elt 小于等于( heq 恒等于(===) n...
  • jsbba
  • jsbba
  • 2013年11月08日 10:15
  • 4086

thinkphp 模板页面select判断 if标签

thinkphp 模板页面select判断 if标签
  • hexiaoniao
  • hexiaoniao
  • 2016年12月23日 10:18
  • 2011

ThinkPHP3.2+版本如何自定义自己的标签

在前台调用模板的时候,一般会将公用的部分(头部、左侧|右侧、底部)摘出来,单独作为一个文件来引入。这样会使代码更容易维护,但是由于每个文件都载入公共模板,就会需要在多个控制器里面分配同样的数据或者在公...
  • u014250420
  • u014250420
  • 2014年12月10日 14:36
  • 3655

thinkphp 模板解析的流程

ThinkPHP内置模板引擎类
  • qq_16877261
  • qq_16877261
  • 2016年12月13日 10:26
  • 941

ThinkPHP 模板substr的截取字符串函数

ThinkPHP内置了一个可以媲美smarty的模板引擎,给我们带来了很大的方便。调用函数也一样,可以和smarty一样调用自己需要的函数,而官方也内置了一些常用的函数供大家调用。 比如今天我们...
  • u014796999
  • u014796999
  • 2016年10月10日 14:35
  • 1165

thinkPHP的模板布局(1)

首先先说一个。 使用直接在HTML代码内嵌入PHP代码的方式好还是使用一切动态数据都是通过ajax动态获取的方式好? 答案是: ajax是动态交互数据的,因此大部分内容不使用ajax的方式,而是使用在...
  • sinat_16797529
  • sinat_16797529
  • 2015年05月17日 19:13
  • 1026

thinkPHP学习之模板显示与模板替换配置项

前面几章j
  • victortony
  • victortony
  • 2014年08月03日 16:51
  • 979

ThinkPHP 模板解析流程,研究笔记。

ThinkPHP 控制器-方法中,通过$this->display(); 来输出带有模板的视图。 那么就从这个方法入手。 1.Action.class.php  控制器基类 这是控制器基类,在这里面找...
  • zstxt1989
  • zstxt1989
  • 2013年07月18日 13:22
  • 1463

ThinkPHP的html:list标签简要用法及注意事项

  • ynw1990
  • ynw1990
  • 2016年11月04日 11:05
  • 564

【ThinkPHP】自定义标签

自定义标签在一般情况下建议不要乱用,毕竟后面维护起来要找到很深的位置才能发现代码的真正位置,别人看不懂你写的标签是非常困惑的一件事。除非这行属于你自己的代码出现了多次,比如UEditor富文本编辑器等...
  • yongh701
  • yongh701
  • 2015年09月24日 10:39
  • 1111
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ThinkPHP(6)——模板技术
举报原因:
原因补充:

(最多只允许输入30个字)