🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 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不使用(默认)转义md5md5加密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&nbsp;判断变量是否存在某些值notbetween&nbsp;判断变量是否不存在某些范围值present&nbsp;判断某个变量是否 已定义notpresent&nbsp;判断某个变量是否 未定义empty&nbsp;判断某个变量是否为空notempty&nbsp;判断某个变量是否不为空defined&nbsp;判断某个常量是否 已定义notdefined&nbsp;判断某个常量是否 未定义 ~~~ 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&nbsp;不等于gt&nbsp;大于egt&nbsp;大于等于lt小于elt&nbsp;小于等于heq&nbsp;恒等于nheq&nbsp;不恒等于 ~~~ 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}<br/> {/for} ~~~ 4、杂项标签 标签描述literal原样输出php&nbsp;使用原生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}--后台管理系统 > >     > >     > >     > >         .header{width:100%;height: 50px;line-height: 50px;background: #2e6da4;color:#ffffff;} > >         .title{margin-left: 20px;font-size: 20px;} > >         .userinfo{float: right;margin-right: 10px;} > >         .userinfo a{color:#ffffff;} > >         .menu{width: 200px;background:#333744;position:absolute;} > >         .main{position: absolute;left:200px;right:0px;} > > > >         .layui-collapse{border: none;} > >         .layui-colla-item{border-top:none;} > >         .layui-colla-title{background:#42485b;color:#ffffff;} > >         .layui-colla-content{border-top:none;padding:0px;} > > > >         .content span{background: #009688;margin-left: 30px;padding: 10px;color:#ffffff;} > >         .content div{border-bottom: solid 2px #009688;margin-top: 8px;} > >         .content button{float: right;margin-top: -5px;} > >     > > > > > >     > >         {$title}--后台管理系统 > >         【{$login}】退出 > >     view代码:left.html > > >     > >         {foreach $left as $k=>$left\_v} > >             > >                 {$left\_v.title} > >                 > >                     > >                         {foreach $left\_v\['lists'\] as $lists\_v} > >                             {$lists\_v.title} > >                         {/foreach} > >                     > >                 > >             > >         {/foreach} > >     > > view代码:bottom.html > > > > > > >     layui.use(\['element','layer','laypage'\], function(){ > >         var element = layui.element; > >         var laypage = layui.laypage; > >         $ = layui.jquery; > >         layer = layui.layer; > >         resetMenuHeight(); > >     }); > >     // 重新设置菜单容器高度 > >     function resetMenuHeight(){ > >         var height = document.documentElement.clientHeight - 50; > >         $('#menu').height(height); > >     } > > view代码:index.html > {include file="public/head" /} > > {include file="public/left" /} > > > >     > >         商品列表 > >         > >     > >     > >         > >             > >                 ID > >                 商品标题 > >                 分类 > >                 原价 > >                 折扣 > >                 现价 > >                 库存 > >                 状态 > >                 添加时间 > >             > >         > >         > >             {volist name="right" id="right\_v"} > >                 > >                     {$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'} > >                 > >             {/volist} > >         > >     > > > > {include file="public/bottom" /}