TP5在HTML中 if判斷語句用法

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}


例子:

                  <option value="1" {if condition="$rsEdit.type eq 1"}selected{/if}>教務</option>
                  <option value="2" {if condition="$rsEdit.type eq 2"}selected{/if}>機構</option>
                  <option value="3" {if condition="$rsEdit.type eq 3"}selected{/if}>財務</option>
                  <option value="4" {if condition="$rsEdit.type eq 4"}selected{/if}>業務</option>

例子:不等於空

 {if condition="$rsEdit.img != ''"}<img src="/uploads/{$rsEdit.img}" width="50px" height="50px">{/if}

<form class="layui-form" action="{empty name='$rsEdit.uid'}{:url('main/addschool')}{else /}{:url('main/editschool')}{/empty}" method="post">

判斷多個變量不爲空

{if condition="($count_notice neq null) or ($count_consultant neq null)"}

權限判斷例子:

說明:

1、session('manage')=“1,2,3,5,6,7”;

2、get_array_repeats(explode(',',session('manage')),7) == 1

判斷7在session('manage')中出現的次數,上面==1,說明出現了一次,即7這個權限用戶是有的,出現次數大於1,說明有這個權限。

 {if condition="(get_array_repeats(explode(',',session('manage')),7) == 1) or (get_array_repeats(explode(',',session('manage')),8) == 1)"}
    <div class="layui-form-item">
      <label class="layui-form-label">權限</label>
      <div class="layui-input-block">
        <input type="checkbox" name="manage[]" value="1" title="增加" {if condition="get_array_repeats(explode(',',$rsEdit.manage),1) > 0"}checked{/if}>
        <input type="checkbox" name="manage[]" value="2" title="修改" {if condition="get_array_repeats(explode(',',$rsEdit.manage),2) > 0"}checked{/if}>
        <input type="checkbox" name="manage[]" value="3" title="刪除" {if condition="get_array_repeats(explode(',',$rsEdit.manage),3) > 0"}checked{/if}>
        <input type="checkbox" name="manage[]" value="4" title="導入" {if condition="get_array_repeats(explode(',',$rsEdit.manage),4) > 0"}checked{/if}>
        <input type="checkbox" name="manage[]" value="9" title="導出" {if condition="get_array_repeats(explode(',',$rsEdit.manage),9) > 0"}checked{/if}>
      </div>
    </div>
    <div class="layui-form-item">
      <label class="layui-form-label">層次</label>
      <div class="layui-input-block">
        <input type="checkbox" name="manage[]" value="5" title="員工" {if condition="get_array_repeats(explode(',',$rsEdit.manage),5) > 0"}checked{/if}>
        <input type="checkbox" name="manage[]" value="6" title="操作員" {if condition="get_array_repeats(explode(',',$rsEdit.manage),6) > 0"}checked{/if}>
        <input type="checkbox" name="manage[]" value="7" title="總監" {if condition="get_array_repeats(explode(',',$rsEdit.manage),7) > 0"}checked{/if}>
         {if condition="get_array_repeats(explode(',',session('manage')),8) == 1"}
        <input type="checkbox" name="manage[]" value="8" title="管理員" {if condition="get_array_repeats(explode(',',$rsEdit.manage),8) > 0"}checked{/if}>
        {/if}
      </div>
    </div>
{/if}


表達式不分大小寫,支持的查詢表達式有下面幾種,分別表示的含義是:

表達式    含義
EQ、=    等於(=)
NEQ、<>    不等於(<>)
GT、>    大於(>)
EGT、>=    大於等於(>=)
LT、<    小於(<)
ELT、<=    小於等於(<=)
LIKE    模糊查詢
[NOT] BETWEEN    (不在)區間查詢
[NOT] IN    (不在)IN 查詢
[NOT] NULL    查詢字段是否(不)是NULL
[NOT] EXISTS    EXISTS查詢
EXP    表達式查詢,支持SQL語法
> time    時間比較
< time    時間比較
between time    時間比較
notbetween time    時間比較
表達式查詢的用法示例如下:

詳細:http://blog.csdn.net/haibo0668/article/details/78083688
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}

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}

官方詳細文檔:https://www.kancloud.cn/manual/thinkphp5/125019

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章