我们可以使用if标签来定义复杂的条件判断,例如:9 l3 H! a, H/ K- J
- <if condition="($name eq 1) OR ($name gt 100) "> value1
/ U" H' m4 r" ?7 ?8 A+ q7 j0 g& m
1 ^% Y6 J( @6 y4 z) v- <elseif condition="$name eq 2" />value28 M( Y6 W0 C* [3 ]% {2 w; y& _$ X
. J4 B. p) @# L) T" A; r5 ]- <else /> value3
) u- F; L- K( N4 I - ! x6 n6 M. r* V5 g- k6 l4 Y
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
7 Q5 p) \% I* H- <if condition="$id < 5 "> value1
6 l' H8 Z& m5 c n - n( L0 N) z2 j2 K V2 E k
- <else /> value2
9 @3 \5 i' o C; r; S4 Q - - R8 J& l1 V5 Y& g
- </if>
复制代码 必须改成:, S3 b0 Z6 [" ?& R' O
- <if condition="$id lt 5 "> value1
5 X8 X4 X( n7 S4 ^! E
7 p9 s8 `" u9 R6 ~3 W- <else /> value2
! n Y5 ?. h' c+ [3 f! @8 C - 4 ?6 R/ H7 F. [3 {/ o) P2 \ k# G/ V
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
- [, ]! W& ?4 J- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
& d! ?% {& r) s( i4 P- f
. t/ ^4 g' t5 O( A- <else /> other Framework7 ]( e9 k ?2 ~. w& C
- 0 p4 X* l4 c4 e5 J! Q# q4 [
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP3 V- ^- }9 |+ j3 K& D
- # H! V$ g/ U% \) T
- <else /> other Framework
5 J6 h8 u, @% K* V: J$ C - ; o( @ D" t6 ?$ v, a! L
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP# g9 w) @ c; N2 U7 _# ?3 s
- $ J, c/ E/ q8 c, V4 h- E1 v/ s) i& W) w
- <else /> other Framework; P* J. F4 u3 l2 t, W5 q
- % l0 L% Q% Z# f. d$ X
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)& b2 |+ ]: R+ D' ~, Z/ H
6 A5 P7 E( P) ^3 F' B- neq 不等于(!=): b3 X0 ~0 f# o
7 U4 n0 U" T% p- f3 `- gt 大于(>)1 p+ c! i' A2 W* ^5 \8 `& V
6 z$ t* S! f, ?- egt 大于等于(>=)" j* P3 t: h! _( v- v
- 9 {7 |& ^9 z* r& ]& t" ^( |
- lt 小于(<). `( `6 X' K* b$ A8 ?
- % p& s$ b& G* \& f
- elt 小于等于(<=)
% N8 x3 Q2 m. I
$ y3 w( l8 m# H( } V- heq 恒等于(===). P) x; z4 I% L5 V$ d, o
1 N0 x+ J- ~& q7 }, v! t s- nheq 不恒等于(!==)
复制代码
' m2 L4 B5 ^8 j5 w* n1 W ? l' J- y9 y4 { J
注意
* l2 l3 W- C: [. ~, ^; H/ fcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
) Y3 e6 z: s! a+ @. r4 R- ~提示
* w2 D3 v, Z& @1 I0 m1 U; f, {在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
# F9 K5 K( P0 O/ {如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
1 L9 _ F* E) c+ o/ ~! b( B' y- E7 g* I
|