我们可以使用if标签来定义复杂的条件判断,例如:
# N5 M% l8 e6 B9 U! R( }8 @- <if condition="($name eq 1) OR ($name gt 100) "> value1
' Z: m& ^- x. x; v0 Q3 L
& ~' ^% i$ v/ W3 L0 h- <elseif condition="$name eq 2" />value2; r' E1 u O5 f$ W% q
- $ }, o/ Z' F0 l3 b
- <else /> value3' n* J% F* \: g3 N
- : b, d2 F/ o+ f; n# \7 R' A
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:" _8 K, D1 \9 |
- <if condition="$id < 5 "> value1
8 j7 ^. e9 Q( g# `6 Y# b* h' J+ v - T! ]3 j$ M4 z. }! z7 F i9 B' ~' o
- <else /> value2
3 C1 R9 l) E1 ]
+ T% L" V. F! v- e# ~$ z" r9 P- </if>
复制代码 必须改成:
* h* f4 ?! A7 F, |$ R6 {- <if condition="$id lt 5 "> value1; j) H( j' F$ D0 j0 W
1 h, V1 H l: ]5 ^2 A# s- <else /> value2
8 [ k0 X" { P. `5 t1 h - + c% C+ ^" M9 M
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如: {- q5 D& f6 s! L, S3 X& B( {
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
3 r0 m/ F1 b2 I1 v5 K - # X' q5 P; R8 t. q
- <else /> other Framework3 b2 ^' H( H& T. a R/ g% `
7 Z7 x% T( Q2 D$ B2 U y- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
, n' H! K/ R5 j! ^& l0 P
2 P4 _6 H" V$ p0 x, P! i- <else /> other Framework
2 l4 F4 A. J; j6 A
( L, n$ W' G' O- a- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
, P# a; i' _5 D8 h( A* s8 m
3 B$ _; ]7 b' F- <else /> other Framework
: V2 W! q: a' p/ f - + n; E' D( @8 ?3 J k
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)9 M- F) u, d, G4 X1 |
0 l7 F% n' n* J+ q6 U( F1 M( Y6 A- neq 不等于(!=)0 w4 i$ d, G" A9 M! k
/ K* t. I5 b. \2 R" d# d$ J5 E- gt 大于(>); H) u+ O) q9 } i f3 z0 f/ v
- ; {7 k7 e. m+ X p% M8 J6 d
- egt 大于等于(>=)
4 l4 b+ K2 s+ Q5 I7 Y$ B
/ R& _% U4 b+ H2 ~- n7 `! B- lt 小于(<)9 Z" _. v0 W8 c3 g# U
3 Y+ @) [, ^: P0 j6 P- elt 小于等于(<=)
5 m1 w/ v+ m. E - ( S$ h* K: B: T( w
- heq 恒等于(===), P2 h& H/ P4 u
: ~3 S2 e( c' z _9 u: `- nheq 不恒等于(!==)
复制代码
_ j B" s% ?4 P' f $ `( V: G" v9 f" y R" T3 w
注意! J( P: \3 A# {( y
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
: n& w4 c' x* b9 Z提示
8 d4 {: ~6 o+ Q U在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
$ w$ z3 U7 ?1 F" R8 n3 q如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。0 G4 m- n9 H, w
+ c+ D: l7 U' k |