为了方便大家在模板里面快速的调用数据库内容,HisiPHP基于TP自带的标签库扩展功能,为大家集成了通用标签库(循环标签)功能。下面将具体说明通用标签的使用。 ## 什么是标签 标签存在的意义就是将复杂的原始PHP数据调用语句封装为简单易懂的格式化标签,便于归纳整理及团队协作。比如,让前端工程师直接完成数据的调用而无需知道其内部的构造及原理。 ## 循环标签库 循环标签通常用于对数组或对象的循环输出,一般在模板中以「列表」的形式体现。基本格式如下: ~~~ <ul> {hisi:loop data="[['name' => '张三'], ['name' => '李四']]"} <li>{$r['name']}</li> {/hisi:loop} </ul> ~~~ ## 循环标签属性详解 | 参数 | 说明 | 默认值 | 描述 | | --- | --- |--- | --- | | model | 模型名称 | 无 | 示例值:Article,跨模块示例值:Cms/Article | | with | 关联预载入 | 无 | 传入model时有效。示例值:category | | table | 表名 | 无 | 数据库表名,无需携带表前缀,示例值:article | | where | 表查询条件 | 无 | 传入model或table时有效。注意:如查询条件为拼装字符串需用单引号引起来,字符串带变量查询示例:'cid = '.$cid.' and status > 0',数组带查询示例:['cid' => $cid, 'status' => ['gt', 0]] | | field | 返回的字段 | 无 | 传入model或table时有效。示例值:id,name | | group | 查询分组 | 无 | 传入model或table时有效。示例值:cid | | order | 返回结果排序 | 无 | 传入model或table时有效。示例值:id desc | | limit | 限制返回结果数量 | 20 | 只能填写正整数 | | page | 分页页码 | 1 | 只能填写正整数 | | sql | 原生sql语句 | 无 | 示例值:select * form article | | data | 循环输出的数组 | 无 | 可直接传数组或变量。变量示例:$data,数组示例:[['name' => '张三'], ['name' => '李四']] | | cache | 缓存 | false | 传入model或table时有效。可传bool值[true, false]或数字,传入数字表示缓存多少秒 | | id | 当前的循环变量 | r | 示例值:vo | | key | 循环计数变量 | i | 示例值:k | | empty |为空的时候输出提示 | 无 | 示例:<div class='empty'>暂无相关数据</div> | ## model属性示例代码 ~~~ <ul> {hisi:loop model="cms/Article" with="category" id="vo" field="id,name" order="id desc" limit="20" page="input('param.page', 1)"} <li>[{$vo['category']['name']}]<a href="/show/{$vo['id']}.html">{$vo['name']}</a></li> {/hisi:loop} </ul> ~~~ >[info] 上面的代码用到了with关联预查询,在结果里面直接引用即可 ## table属性示例代码 ~~~ <ul> {hisi:loop table="Article" id="vo" field="id,name" order="id desc" limit="20" page="input('param.page', 1)"} <li><a href="/show/{$vo['id']}.html">{$vo['name']}</a></li> {/hisi:loop} </ul> ~~~ ## data属性示例代码 ~~~ <ul> {hisi:loop data="[['id' => 1, 'name' => '张三'], ['id' => 2, 'name' => '李四']]" id="vo"} <li><a href="/show/{$vo['id']}.html">{$vo['name']}</a></li> {/hisi:loop} </ul> ~~~ ## 标签嵌套示例代码 ~~~ <ul> {hisi:loop data="[['id' => 1, 'name' => '张三', 'childs' => [['id' => 1, 'name' => '张三'], ['id' => 2, 'name' => '李四']]], ['id' => 2, 'name' => '李四']]" id="vo"} <li><a href="/show/{$vo['id']}.html">{$vo['name']}</a></li> {if condition="isset($vo['childs'])"} {hisi:loop data="$vo['childs']" id="vv"} <li>---<a href="/show/{$vv['id']}.html">{$vv['name']}</a></li> {/hisi:loop} {/if} {/hisi:loop} </ul> ~~~ >[info] 标签嵌套最多支持5层嵌套