我们可以使用if标签来定义复杂的条件判断,例如:
& r1 H) g7 X! U, \8 H, G% |, ^- <if condition="($name eq 1) OR ($name gt 100) "> value1( N& r& I/ P% N4 R& z
9 w0 @1 |9 B7 x3 X$ Y. V$ p9 f+ F- <elseif condition="$name eq 2" />value2
0 f: P( n4 y p i/ }
' d: S9 a, r5 j9 b6 g+ L k- <else /> value3
) e* w4 H4 J+ f, a* C7 U - : h- V( q% Y+ A+ Y& j) X+ @9 X. ]
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
1 u: @3 `' n- Z+ }- <if condition="$id < 5 "> value1
* E8 ^1 t: B: j; g, j
: v" Q8 w. P8 H) |* [) }- <else /> value2
8 J4 ?3 p9 v" ^2 G; A5 \' X9 O2 k2 ^4 s
3 g. t' G! {; X8 F; o- </if>
复制代码 必须改成:
W" m2 |8 V# H4 i- <if condition="$id lt 5 "> value1
. h X$ h2 ?# Y
) z1 i9 _" q. Z% K- <else /> value2) x- Q- j4 z2 C, g/ R. m W7 a
- $ S$ H- B2 B- C( c
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
' Z* q3 c# p8 R. j& X, P) P- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP: R% s6 e* x7 w) N; X8 C
- 3 I: j3 a' c; g8 P6 a, T
- <else /> other Framework
+ b% |4 d( y; q5 @2 h
5 U. u, N( Q6 S6 t- g- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP, k' h4 G2 X2 f- m
- % t. y5 t% M& E: `/ q, k A
- <else /> other Framework
6 }& p# i' [( K0 R, u( x, X1 D - : q/ b1 i$ I* b. U6 @
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP! B& A9 g4 P4 Q0 J2 Z/ U9 `
- 6 E; m* x8 i; z; z) g! B" `5 p
- <else /> other Framework
$ J* j' |9 g3 ^# F+ h- N - 6 n5 `4 I4 d$ v+ R
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
+ p9 q# v! c9 c D: g3 {5 ? - 6 G5 [% C' m6 g0 I b
- neq 不等于(!=)+ o! s+ n" K% c# N# M
& { K" h: b9 O" c! Z% |- gt 大于(>)7 a! G9 t% I8 P. K/ W% L
- / z- U R" N+ C N, }7 }5 I: r
- egt 大于等于(>=)
# o+ O) A8 y- ?* M6 n) X) c
W7 d/ y% a" X9 U+ G+ d- lt 小于(<)
" c& s \# b4 O) H - # j; x: O3 ?: g0 X$ t# B0 b0 X$ \4 n
- elt 小于等于(<=)
2 j( t z+ D7 U: r" \6 W
, T% q' G( a |8 H8 Y) A- heq 恒等于(===)
, S0 E4 T& D5 `- C, f& D. H8 F - , K4 X0 S8 c `) p& g
- nheq 不恒等于(!==)
复制代码3 \7 c J: @2 m) ^# ]* t
! b/ B g' z8 [5 P# Z. t注意
" M- g) p( _; K* o: Acondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。+ q5 u0 }5 i: o+ h2 N. `/ J2 n
提示
! i7 l9 o- ^! T2 h在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
) z8 L* O( }/ c. D4 R0 [ H如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。. W! [, F5 K3 L3 m8 ^/ w
2 n8 V+ Q; U6 q j# N. [: ~ |