💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# ThinkPHP6 模版 * `ThinkPHP` 内置了一个基于 `XML` 的性能卓越的模板引擎,这是一个专门为ThinkPHP服务的内置模板引擎,使用了 `XML` 标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。 * `config/template.php` 文件可以进行模版设置 --- **标签类型**|**描述** ---|--- 普通标签|主要用于输出变量、函数过滤和做一些基本的运算操作 XML标签|也称为标签库标签,主要完成一些逻辑判断、控制和循环输出,并且可扩展 ## 一、普通标签 ### 1、普通标签标记 * `config/template.php` 文件里的 `tpl_begin` 和 `tpl_end` 设置普通标签标记 ```php 示例: return [ // 模板引擎普通标签开始标记 'tpl_begin' => '{', // 模板引擎普通标签结束标记 'tpl_end' => '}' ]; ``` ### 2、模版 变量输出 ```php php示例: namespace app\index\controller; use app\BaseController; use think\facade\View; class Index extends BaseController{ public function index(){ View::assign('n','ouyangke'); $data = [ 'name' => 'PHP中文网', 'teacher' => [ 'ouyangke' => '欧阳克', 'huangrong' => '黄蓉' ] ]; View::assign($data); return View::fetch(); } } ``` ```html html示例: <div>我是 {$n}</div> <div>学校:{$name}</div> <div>讲师1:{$teacher.ouyangke}</div> <div>讲师2:{$teacher.huangrong}</div> ``` ### 3、模版 系统变量 * 系统变量则不需要赋值,直接在模版中使用 * 支持输出 `$_SERVER` `$_ENV` `$_POST` `$_GET` `$_REQUEST` `$_SESSION` `$_COOKIE` 变量 ```html html示例: <div>{$Think.server.HTTP_HOST}</div> ``` ### 4、模版 函数 **方法**|**描述** ---|--- default|默认值 md5|md5加密 date|日期格式化(支持各种时间类型) format|字符串格式化 upper|转换为大写 lower|转换为小写 first|输出数组的第一个元素 last|输出数组的最后一个元素 substr|返回字符串的一部分 ```php php示例: namespace app\index\controller; use app\BaseController; use think\facade\View; class Index extends BaseController{ public function index(){ $data = [ 'pwd' => '123456', 'time' => '1561016803', 'number' => 123123234.434, 'up' => 'ouyangke', 'lo' => 'HangRong', 'arr' => [ 'ouyangke' => '欧阳克', 'huangrong' => '黄蓉', 'guojing' => '郭靖' ], 'sub' => '欧阳克' ]; View::assign($data); return View::fetch(); } } ``` ```html <div>{$name|default='PHP中文网'}</div> <div>{$pwd|md5}</div> <div>{$time|date="Y-m-d H:i:s"}</div> <div>{$number|format='%02d'}</div> <div>{$up|upper}</div> <div>{$lo|lower}</div> <div>{$arr|first}</div> <div>{$arr|last}</div> <div>{$sub|substr=0,3}</div> ``` ### 5、模版 运算符 **方法**|**描述** ---|--- `+`|加法 `-`|减法 `*`|乘法 `/`|除法 `%`|取余 `++`|加加 `--`|减减 ```php php示例: namespace app\index\controller; use app\BaseController; use think\facade\View; class Index extends BaseController{ public function index(){ $data = [ 'a' => 100, 'b' => 21 ]; View::assign($data); return View::fetch(); } } ``` ```html html示例: <div>{100+21} = {$a+$b}</div> <div>{100-21} = {$a-$b}</div> <div>{100*21} = {$a*$b}</div> <div>{100/21} = {$a/$b}</div> <div>{100%21} = {$a%$b}</div> <div>{100++} = {$a++}</div> <div>{100--} = {$a--}</div> ``` ### 6、模版 原样输出 ```php <?php namespace app\index\controller; use app\BaseController; use think\facade\View; class Index extends BaseController{ public function index(){ $data = [ 'name' => '欧阳克' ]; View::assign($data); return View::fetch(); } } ``` ```html html示例: <div> {literal} Hello,{$name}! {/literal} </div> ``` ### 7、模版 注释 ```html html示例: {// 这是单行注释 } {/* 这是多行注释 */} <div>欧阳克</div> ``` ### 8、模版 包含文件 ```html html示例: {include file="public/header" /} <div>这是内容</div> {include file="public/bottom" /} ``` ```html header文件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>被包含文件</title> </head> <body> ``` ```html bottom文件: </body> </html> ``` --- ## 二、XML标签 ### 1、XML标签标记 * `config/template.php` 文件里的 `tpl_begin` 和 `tpl_end` 设置普通标签标记 ```php 示例: return [ // 标签库标签开始标记 'taglib_begin' => '{', // 标签库标签结束标记 'taglib_end' => '}' ]; ``` ### 2、循环标签 * `FOREACH` 标签 ```php php示例: namespace app\index\controller; use app\BaseController; use think\facade\View; class Index extends BaseController{ public function index(){ $data = [ ['id' => 1,'name' => '欧阳克'], ['id' => 2,'name' => '黄蓉'], ['id' => 3,'name' => '郭靖'] ]; View::assign($data); return View::fetch(); } } ``` ```html html示例: {foreach $data as $key => $value } <div>key:{$key} --- id:{$value.id} --- 姓名:{$value['name']}</div> {/foreach} ``` * `VOLIST` 标签 > name 要循环的数组 > id 循环赋值 > key 下标 > offset 开始位置 > length 循环长度 ```html html示例: {volist name="data" id="value" key="key" } <div>key:{$key} --- id:{$value.id} --- 姓名:{$value['name']}</div> {/volist} {volist name="data" id="value" key="key" offset="1" length="2"} <div>key:{$key} --- id:{$value.id} --- 姓名:{$value['name']}</div> {/volist} ``` > foreach下标是0开始,volist下标是1开始 * `FOR` 标签 > start 开始值 > end 结束值 > step 步进值 > name 循环变量名 ```html {for start="10" end="100" name="a" step="5" } <div>{$a}</div> {/for} ``` ### 3、条件判断标签 ```php php示例: namespace app\index\controller; use app\BaseController; use think\facade\View; class Index extends BaseController{ public function index(){ $data = [ 'name' => 'huangrong', 'number' => 100 ]; View::assign($data); return View::fetch(); } } ``` * `SWITCH` 标签 ```html {switch $name } {case ouyangke} <div>我是欧阳克</div> {/case} {case huangrong} <div>我是黄蓉</div> {/case} {default /} <div>我是主讲</div> {/switch} ``` * `IF` 标签 ```html {if $number >= 90} <div>优秀</div> {elseif $number >= 60 /} <div>及格</div> {else /} <div>不及格</div> {/if} ``` * `IN` 标签 ```html {in name="number" value="99,100,101"} <div>在范围内</div> {/in} ``` * `NOTIN` 标签 ```html {notin name="number" value="102,103,014"} <div>不在范围内</div> {/notin} ``` * `BETWEEN` 标签 ```html {between name="number" value="99,200"} <div>在范围内</div> {/between} ``` * `NOTBETWEEN` 标签 ```html {notbetween name="number" value="A,Z"} <div>不在范围内</div> {/notbetween} ``` ### 4、比较标签 **标签**|**含义** ---|--- eq或者 equal|等于 neq 或者notequal|不等于 gt|大于 egt|大于等于 lt|小于 elt|小于等于 heq|恒等于 nheq|不恒等于 ```php php示例: namespace app\index\controller; use app\BaseController; use think\facade\View; class Index extends BaseController{ public function index(){ $data = [ 'name' => '欧阳克', 'number' => 100 ]; View::assign($data); return View::fetch(); } } ``` ```html html示例: {eq name="name" value="欧阳克"} <div>相等</div> {/eq} {neq name="name" value="黄蓉"} <div>不相等</div> {/neq {gt name="number" value="5"} <div>大于5</div> {/gt} {egt name="number" value="100"} <div>大于等于100</div> {/egt} {lt name="number" value="234"} <div>小于234</div> {/lt} {elt name="number" value="100"} <div>小于100</div> {/elt} {eq name="name" value="黄蓉"} <div>相等</div> {else/} <div>不相等</div> {/eq} ``` > 备注:每个标签都可以增加 `{else/}` 判断标签