ThinkPHP6.0 视图

模板引擎支持普通标签和XML标签方式两种标签定义,分别用于不同的目的.



ThinkPHP6 视图

  • 模板引擎支持普通标签XML标签方式两种标签定义,分别用于不同的目的

标签类型 描述
普通标签 主要用于输出变量、函数过滤和做一些基本的运算操作
XML标签 也称为标签库标签,主要完成一些逻辑判断、控制和循环输出,并且可扩展

一、运算符

运算符 示例
+ {$a+$b}
- {$a-$b}
* {$a*$b}
/ {$a/$b}
% {$a%$b}
++ {$a++} 或 {++$a}
-- {$a--} 或{--$a}
综合运算 {$a+$b*10+$c}
三元运算符 {$a==$b ? 'yes' : 'no'}

controller文件

public function index(){

View::assign('a',100);

View::assign('b',21);

return View::fetch();

}

view文件

{$a+$b}

{$a-$b}

{$a*$b}

{$a/$b}

{$a%$b}

{$a++}

{++$a}

{$a--}

{--$a}

{$c ? '存在' : '不存在'}

二、模版函数

方法 描述
date 日期格式化(支持各种时间类型)
format 字符串格式化
upper 转换为大写
lower 转换为小写
first 输出数组的第一个元素
last 输出数组的最后一个元素
default 默认值
raw 不使用(默认)转义
md5 md5加密
substr 截取字符串
  • 可以多函数调用

controller文件

public function index(){

View::assign('time',1576048640);

View::assign('num',10.0032);

View::assign('str','OUyangKE');

View::assign('arr',[

'朱老师',

'欧阳克',

'西门大官人'

]);

return View::fetch();

}

view文件

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

{$num|format='%02d'}

{$str|upper}

{$str|lower}

{$arr|first}

{$arr|last}

{$default|default="欧阳克"}

{$str|substr=0,3}

{$str|md5}

{$str|lower|substr=0,3}

三、循环标签

  • foreach标签的用法和PHP语法非常接近,用于循环输出数组或者对象的属性

controller文件

public function index(){

$arr = [

[

'id' => 1,

'name' => '欧阳克'

],

[

'id' => 2,

'name' => '朱老师'

],

[

'id' => 3,

'name' => '西门大官人'

]

];

View::assign('arr',$arr);

return View::fetch();

}

view文件

{foreach $arr as $v}

ID:{$v['id']}

姓名:{$v['name']}

{/foreach}

四、volist 循环标签

  • 二维数组的结果输出

  • name 模板赋值的变量名称

  • id 当前的循环变量,可以随意起名

  • key 下标,从1开始,默认变量i

  • offset 开始行数

  • length 获取行数

  • empty 如果数据为空,显示此文字

view文件

{volist name="arr" id="v" key="k" offset="1" length="2"}

ID:{$v['id']}

姓名:{$v['name']}

下标:{$k}

{/volist}

五、if 判断标签

  • if标签的用法和PHP语法非常接近,用于条件判断

controller文件

public function index(){

View::assign('status',1);

View::assign('order_status',4);

return View::fetch();

}

view文件

{if $status == 1}

开启

{/if}


{if $status == 0}

关闭

{else/}

开启

{/if}


{if $order_status == 0}

未支付

{elseif $order_status == 1/}

已支付 待发货

{elseif $order_status == 2/}

已发货 待收货

{elseif $order_status == 3/}

已收货 待评论

{elseif $order_status == 4/}

已完成

{/if}

六、switch 判断标签

  • switch标签的用法和PHP语法非常接近,用于条件判断

view文件

{switch $order_status}

{case 0 }

未支付
{/case}

{case 1 }

已支付 待发货
{/case}

{case 2 }

已发货 待收货
{/case}

{case 3 }

已收货 待评论
{/case}

{case 4 }

已完成
{/case}

{/switch}

七、包含文件

  • include标签,引入模版文件

  • load标签,引入资源文件(css、js)

view文件,把头部和尾部分文件

{include file="public/header" /}

{include file="public/left" /}


{load href="/static/layui/css/layui.css" /}

{load href="/static/layui/layui.js" /}


{include file="public/tail" /}

八、其他标签

1、条件标签

标签 描述
in 判断变量是否存在某些值
notin 判断变量是否不存在某些值
between 判断变量是否存在某些值
notbetween 判断变量是否不存在某些范围值
present 判断某个变量是否 已定义
notpresent 判断某个变量是否 未定义
empty 判断某个变量是否为空
notempty 判断某个变量是否不为空
defined 判断某个常量是否 已定义
notdefined 判断某个常量是否 未定义

public function index(){ View::assign('number',100); View::assign('string',''); return View::fetch(); }
{in name="number" value="99,100,101"} number等于99,100,101任意一个值 {/in} {notin name="number" value="99,100,101"} number不等于99,100,101任意一个值 {/notin} {between name="number" value="1,10"} number等于1 到 10 之间的任意一个值 {/between} {notbetween name="number" value="1,10"} number不等于1 到 10 之间的任意一个值 {/notbetween} {present name="number"} number已经定义 {/present} {notpresent name="n"} n还没有定义 {/notpresent} {empty name="string"} name为空值 {/empty} {notempty name="string"} name有值 {/notempty} {defined name="NAME"} NAME常量已经定义 {/defined} {notdefined name="NAME"} NAME常量未定义 {/notdefined}

2、比较标签

标签 描述
eq 等于
neq 不等于
gt 大于
egt 大于等于
lt 小于
elt 小于等于
heq 恒等于
nheq 不恒等于

public function index(){ View::assign("number",100); View::assign("string","欧阳克"); return View::fetch(); }
{eq name="number" value="100"} number 等于 100 {/eq} {neq name="number" value="101"} number 不等于 101 {/neq} {gt name="number" value="33"} number 大于 33 {/gt} {egt name="number" value="100"} number 大于等于 100 {/egt} {lt name="number" value="200"} number 小于 200 {/lt} {elt name="number" value="100"} number 小于等于 100 {/elt} {heq name="string" value="欧阳克"} string 恒等于 欧阳克 {/heq} {heq name="string" value="朱老师"} string 恒不等于 朱老师 {/heq}

3、循环标签

标签 描述
for 计数循环
  • start:开始值

  • end:结束值

  • step:步进值,默认1

  • name:循环变量名,默认i

{for start="1" end="50" step="5" name="i"} {$i}
{/for}

4、杂项标签

标签 描述
literal 原样输出
php 使用原生php代码
{literal} {$name} 这里$name不会被当作变量,而是普通字符 {/literal} {php} echo '欧阳克'; {/php}

九、示例

controller代码

namespace app\controller;

use think\facade\View;

class Index{

public function index(){

$title = '商城';

$login = '欧阳克';

$left = [

[

'title' => '商品管理',

'lists' => [

[

'id' => 1,

'title' => '商品列表',

],

[

'id' => 2,

'title' => '商品分类',

]

]

],

[

'title' => '用户管理',

'lists' => [

[

'id' => 3,

'title' => '用户列表',

],

[

'id' => 4,

'title' => '购物车',

],

[

'id' => 5,

'title' => '用户地址',

],

[

'id' => 6,

'title' => '订单管理',

]

]

],

[

'title' => '后台管理',

'lists' => [

[

'id' => 7,

'title' => '管理员列表',

],

[

'id' => 8,

'title' => '个人中心',

],

[

'id' => 9,

'title' => '左侧菜单列',

]

]

]

];

$right = [

[

'id' => 1,

'title' => '熙世界2019秋冬新款长袖杏色上衣连帽宽松刺绣文艺落肩袖加厚卫衣BF风',

'cat' => '女装',

'price' => 189,

'discount' => 6,

'status' => 1,

// 'status' => '开启',

'add_time' => '2019-12-12',

// 'add_time' => '1576080000'

],

[

'id' => 2,

'title' => '秋水伊人双面呢冬装2019年新款女装气质西装领撞色羊毛大衣外套女',

'cat' => '女装',

'price' => 699,

'discount' => 7,

'status' => 1,

// 'status' => '开启',

'add_time' => '2019-12-12',

// 'add_time' => '1576080000'

],

[

'id' => 3,

'title' => '微弹中高腰直脚牛仔裤男',

'cat' => '男装',

'price' => 179,

'discount' => 8,

'status' => 0,

// 'status' => '开启',

'add_time' => '2019-12-12',

// 'add_time' => '1576080000'

],

[

'id' => 1,

'title' => '男士长袖t恤秋季圆领黑白体恤T 纯色上衣服打底衫',

'cat' => '男装',

'price' => 99,

'discount' => 9,

'status' => 1,

// 'status' => '开启',

'add_time' => '2019-12-12',

// 'add_time' => '1576080000'

],

];

View::assign([

'title' => $title,

'login' => $login,

'left' => $left,

'right' => $right

]);

return View::fetch();

}

}

view代码:head.html


{$title}--后台管理系统

{$title}--后台管理系统

【{$login}】退出

view代码:left.html

view代码:bottom.html


view代码:index.html

{include file="public/head" /}

{include file="public/left" /}

商品列表

{volist name="right" id="right_v"}

{/volist}

ID 商品标题 分类 原价 折扣 现价 库存 状态 添加时间
{$right_v.id} {$right_v.title} {$right_v.cat} {$right_v.price} {$right_v.discount}

{if $right_v.discount!=0}

{$right_v.price*($right_v.discount/10)}

{else/}

{$right_v.price}

{/if}

{$right_v.stock} {if $right_v['status']==1}开启{else/}关闭{/if} {$right_v.add_time|date='Y-m-d'}

{include file="public/bottom" /}