Wangren v1.0.0

基础说明

开始使用 Getting Started
目录结构 Structure
第一个应用 Hello World!

架构

配置 Tpl
独立域名 Domain
URL路由 Router

模块

验证码 code
文件处理 files
图片 img
数据库 mysql
文件缓存 cache
分页 page
汉字转拼音 pinyin
模板引擎 template
树形结构 tree
文件上传 upload

模板

标签语法

当我们有了第一个模板,但这时和我们的后端数据间是没有任何关联的,想要将模板和数据关联,这时我们就需要用到标签这个强大的神器了,下面给大家介绍 Wangren 模板引擎中的标签在视图开发中的使用。
模板引擎的作用就是取得数据并加以处理,最后显示出数据,我们通常将这种处理和显示的方式或规则统称为标签,如{$SiteName} 将显示网站名称,当然,这只是标签最简单的应用,在我们的模板引擎中,就还有诸如ifforeachtplU等众多的标签,所有这些标签组合在一起,形成一个完整的标签库,以实现您在前端模板中的各种数据展示需求。 Wangren的模板引擎目前共支持五大类常用标签:
标签名称 基本语法 备注
变量标签
{$SiteName}
{$db[DB_HOST]}
通过此类标签调用系统变量/常量,或您自己定义的变量等
数据循环标签
{foreach $arr as $k=>$v}
    {$v}
{foreachelse}
    no data
{/foreach}
将一个特定数组里的数据进行循环展示和处理
逻辑判断标签
{if [gender]==1}
    男性
{elseif [gender]==2}
    女性
{else}
    中性
{/if}
很多地方都会用到的if else判断语句
URL重写标签
{U(app/module/controller#top,id=[par])}
使用此标签获取目标页的URL地址,主要作用为了支持URL路由功能,能根据URL路由设置自动更新URL地址
插入模板标签
{tpl:header?id=[par],public}
在模板中插入另一个的模板,比如将一个公共部分(如:页头)做成一个模板文件,在其他页面里面统一调用,方便维护和更新
变量标签的标准用法,大多数情况下的使用方法
{$SiteName}             //标准变量调用
{$xxx[yyy][zzz]}        //数组变量调用,[] 里为数组键名,支持无限级
在某些时后,我们可能会在项目中给部分变量加上一个动态变量,比如,在所有 Cookie 前加上一个前缀,防止一个网站下多个项目中的 Cookie 的混乱
//语法
{$cookie.UID}      //在设置了Cookie前缀的项目中会用到

//如:我们项目中设置了一个变量,并且进行了使用
$CookiePro = 'Wangren_';
setcookie($CookiePro.'UID','123');

//那么,此UID在前端界面中的调用方法如下:
{$CookiePro.UID}

//当然,高级用法也支持数组变量调用,如
{$CookiePro.UID[yyy]}
另外,在其他标签中也会使用到此标签功能,例如 逻辑判断、URL重写、插入模板 等,以逻辑标签为例,{if [gender]==1}男性{/if},其中的[gender]就是一个标准的变量标签,只不过因为是用到了if标签中,所以不能再用{ }进行开头和结尾了,所以:
//原来的
{$SiteName}
//要改为
[SiteName]

//原来的
{$xxx[yyy][zzz]}
//要改为
[xxx][yyy][zzz]

//原来的
{$CookiePro.UID[yyy]}
//要改为
[CookiePro.UID][yyy]
数据循环标签和PHP里面的foreach循环方法非常相似:
//用法一
{foreach $array}
   {$array}
{/foreach}

//用法二
{foreach $array as $value}
   {$value}
{/foreach}

//用法三
{foreach $array as $key=>$value}
   {$key}-{$value}
{/foreach}

//空数据判断
{foreach $array as $key=>$value}
   {$value[arr]}
{foreachelse}
   无数据
{/foreach}
下面举个栗子
//数据
$arr = array(array('name'=>'张三','gender'=>'男','age'=>'18'),array('name'=>'李四','gender'=>'男','age'=>'25'),array('name'=>'小花','gender'=>'女','age'=>'20'));

//调用
{foreach $arr as $k=>$v}
   ID:{$k},姓名:{$v[name]},性别:{$v[gender]},年龄:{$v[age]}<br>
{foreachelse}
   无数据
{/foreach}

//结果
ID:0,姓名:张三,性别:男,年龄:18
ID:1,姓名:李四,性别:男,年龄:25
ID:2,姓名:小花,性别:女,年龄:20
除此之外,foreach 标签还具有一些内部关键字:
关键字 用途 基本语法
@iteration 当前循环次数,从1开始 {$array@iteration}
[array@iteration]
@index 表示当前索引,从0开始 {$array@index}
[array@index]
@first 当前是首次循环,first为true {$array@first}
[array@first]
@last 当前是最后一次循环,last为true {$array@last}
[array@last]
@total 循环总次数,可以在 foreach 内部或者之后使用 {$array@total}
[array@total]
@break 停止循环 {$array@break}
@continue 跳出此次循环 {$array@continue}
再举个栗子
{foreach $arr as $k=>$v}
    {$arr@index}       //显示循环索引
    {$arr@iteration}   //显示循环次数

    {if [arr@first]}
        这是第一次循环
    {/if}

    {if [arr@last]}
        这是最后一次循环
    {/if}

    {$arr@total}      //循环总数
{/foreach}

{$arr@total}          //循环总数,外部调用
此标签可以参考PHP是的if条件诘句,特别是其支持的算法等
{if ...}...{/if}
{if ...}...{else}...{/if}
{if ...}...{elseif ...}...{else}...{/if}
//数据
$gender = 1;

//调用
{if [gender]==1}
    男性
{elseif [gender]==2}
    女性
{else}
    中性
{/if}

//结果
男性
[gender]是一个变量标签,具体用法参见上面的 变量标签 -> 扩展用法
{U(应用/模块/控制器#锚点,参数)}

//应用/模块/控制器 均可用空,也可以部分为空,为空时默认为当前页面对应的 应用、模块和控制器,如:
{U(应用/模块/控制器)}
{U(模块/控制器)}
{U(控制器)}
{U()}

//#锚点 可为空,也可以单独存在,如:
{U(应用/模块/控制器,参数)}
{U(#锚点)}

//参数 可为空,也可以单独存在,如:
{U(应用/模块/控制器#锚点)}
{U(,参数)}
另外,参数中还支持调用变量标签,具体用法参见上面的 变量标签 -> 扩展用法
{U(app/module/controller#top,id=[par])}

{U(app/module/controller)}
{U(module/controller)}
{U(controller)}
{U()}

{U(app/module/controller#top)}
{U(#top)}

{U(app/module/controller,id=[par])}
{U(,id=[par])}

{U(#top,id=[par])}
{tpl:模板文件?参数,所在目录}

//模板文件,如
header      //不含后缀的模板文件名称

//参数 可为空,如
id=[par]  或  id=1

//所在目录,如
           //模板存放目录,以 /static/view 为基础目录,可为空
dir        //表示此模板放在 /static/view/dir 目录下
{tpl:header}
{tpl:header,public}
{tpl:header?id=[par]}
{tpl:header?id=[par],public}
参数中支持调用变量标签,具体用法参见上面的 变量标签 -> 扩展用法
© 2021 Wangren.Net  Layui  tinyMCE  SUI Mobile