zoukankan      html  css  js  c++  java
  • 关于标签的使用

    SWITCH标签

    用法:

    {switch name="变量" }
        {case value="值1" break="0或1"}输出内容1{/case}
        {case value="值2"}输出内容2{/case}
        {default /}默认情况
    {/switch}
    

    使用方法如下:

    {switch name="User.level"}
        {case value="1"}value1{/case}
        {case value="2"}value2{/case}
        {default /}default
    {/switch}
    

    其中name属性可以使用函数以及系统变量,例如:

    {switch name="Think.get.userId|abs"}
        {case value="1"}admin{/case}
        {default /}default
    {/switch}
    

    对于case的value属性可以支持多个条件的判断,使用”|”进行分割,例如:

    {switch name="Think.get.type"}
        {case value="gif|png|jpg"}图像格式{/case}
        {default /}其他格式
    {/switch}
    

    表示如果$_GET["type"] 是gif、png或者jpg的话,就判断为图像格式。

    Case标签还有一个break属性,表示是否需要break,默认是会自动添加break,如果不要break,可以使用:

    {switch name="Think.get.userId|abs"}
        {case value="1" break="0"}admin{/case}
        {case value="2"}admin{/case}
        {default /}default
    {/switch}
    

    也可以对case的value属性使用变量,例如:

    {switch name="User.userId"}
        {case value="$adminId"}admin{/case}
        {case value="$memberId"}member{/case}
        {default /}default
    {/switch}
    

    使用变量方式的情况下,不再支持多个条件的同时判断。

    简洁的用法

    {switch $User.userId}
        {case $adminId}admin{/case}
        {case $memberId}member{/case}
    {/switch}
    

    IF标签

    用法示例:

    {if condition="($name == 1) OR ($name > 100) "} value1
    {elseif condition="$name eq 2"/}value2
    {else /} value3
    {/if}
    

    除此之外,我们可以在condition属性里面使用php代码,例如:

    {if condition="strtoupper($user['name']) neq 'THINKPHP'"}ThinkPHP
    {else /} other Framework
    {/if}
    

    condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象

    {if condition="$user.name neq 'ThinkPHP'"}ThinkPHP
    {else /} other Framework
    {/if}
    

    或者知道user变量是对象

    {if condition="$user:name neq 'ThinkPHP'"}ThinkPHP
    {else /} other Framework
    {/if}
    

    由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。

    简洁的用法

    {if condition="表达式"}
    {if (表达式)}
    {if 表达式}
    

    这三种写法结果是一样的

    范围判断

    范围判断标签包括in notin between notbetween四个标签,都用于判断变量是否中某个范围。

    IN和NOTIN

    用法: 假设我们中控制器中给id赋值为1:

    $id =    1;
    $this->assign('id',$id);
    

    我们可以使用in标签来判断模板变量是否在某个范围内,例如:

    {in name="id" value="1,2,3"}
    id在范围内
    {/in}
    

    最后会输出:id在范围内

    如果判断不在某个范围内,可以使用notin标签:

    {notin name="id" value="1,2,3"}
    id不在范围内
    {/notin}
    

    最后会输出:id不在范围内

    可以把上面两个标签合并成为:

    {in name="id" value="1,2,3"}
    id在范围内
    {else/}
    id不在范围内
    {/in}
    

    name属性还可以支持直接判断系统变量,例如:

    {in name="Think.get.id" value="1,2,3"}
    $_GET['id'] 在范围内
    {/in}
    

    更多的系统变量用法可以参考系统变量部分。

    value属性也可以使用变量,例如:

    {in name="id" value="$range"}
    id在范围内
    {/in}
    

    $range变量可以是数组,也可以是以逗号分隔的字符串。

    value属性还可以使用系统变量,例如:

    {in name="id" value="$Think.post.ids"}
    id在范围内
    {/in}
    

    BETWEEN 和 NOTBETWEEN

    可以使用between标签来判断变量是否在某个区间范围内,可以使用:

    {between name="id" value="1,10"}
    输出内容1
    {/between}
    

    同样,也可以使用notbetween标签来判断变量不在某个范围内:

    {notbetween name="id" value="1,10"}
    输出内容2
    {/notbetween}
    

    也可以使用else标签把两个用法合并,例如:

    {between name="id" value="1,10"}
    输出内容1
    {else/}
    输出内容2
    {/between}
    

    当使用between标签的时候,value只需要一个区间范围,也就是只支持两个值,后面的值无效,例如

    {between name="id" value="1,3,10"}
    输出内容1
    {/between}
    

    实际判断的范围区间是1~3,而不是1~10,也可以支持字符串判断,例如:

    {between name="id" value="A,Z"}
    输出内容1
    {/between}
    

    name属性可以直接使用系统变量,例如:

    {between name="Think.post.id" value="1,5"}
    输出内容1
    {/between}
    

    value属性也可以使用变量,例如:

    {between name="id" value="$range"}
    输出内容1
    {/between}
    

    变量的值可以是字符串或者数组,还可以支持系统变量。

    {between name="id" value="$Think.get.range"}
    输出内容1
    {/between}
    

    RANGE

    也可以直接使用range标签,替换前面的判断用法:

    {range name="id" value="1,2,3" type="in"}
    输出内容1
    {/range}
    

    其中type属性的值可以用in/notin/between/notbetween,其它属性的用法和IN或者BETWEEN一致。

    PRESENT NOTPRESENT标签

    present标签用于判断某个变量是否已经定义,用法:

    {present name="name"}
    name已经赋值
    {/present}
    

    如果判断没有赋值,可以使用:

    {notpresent name="name"}
    name还没有赋值
    {/notpresent}
    

    可以把上面两个标签合并成为:

    {present name="name"}
    name已经赋值
    {else /}
    name还没有赋值
    {/present}
    

    present标签的name属性可以直接使用系统变量,例如:

    {present name="Think.get.name"}
    $_GET['name']已经赋值
    {/present}
    

    EMPTY NOTEMPTY 标签

    empty标签用于判断某个变量是否为空,用法:

    {empty name="name"}
    name为空值
    {/empty}
    

    如果判断没有赋值,可以使用:

    {notempty name="name"}
    name不为空
    {/notempty}
    

    可以把上面两个标签合并成为:

    {empty name="name"}
    name为空
    {else /}
    name不为空
    {/empty}
    

    name属性可以直接使用系统变量,例如:

    {empty name="Think.get.name"}
    $_GET['name']为空值
    {/empty}
    

    DEFINED 标签

    DEFINED标签用于判断某个常量是否有定义,用法如下:

    {defined name="NAME"}
    NAME常量已经定义
    {/defined}
    

    name属性的值要注意严格大小写

    如果判断没有被定义,可以使用:

    {notdefined name="NAME"}
    NAME常量未定义
    {/notdefined}
    

    可以把上面两个标签合并成为:

    {defined name="NAME"}
    NAME常量已经定义
    {else /}
    NAME常量未定义
    {/defined}
  • 相关阅读:
    Code Forces 650 C Table Compression(并查集)
    Code Forces 645B Mischievous Mess Makers
    POJ 3735 Training little cats(矩阵快速幂)
    POJ 3233 Matrix Power Series(矩阵快速幂)
    PAT 1026 Table Tennis (30)
    ZOJ 3609 Modular Inverse
    Java实现 LeetCode 746 使用最小花费爬楼梯(递推)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
  • 原文地址:https://www.cnblogs.com/mmore123/p/12844030.html
Copyright © 2011-2022 走看看