我们可以使用if标签来定义复杂的条件判断,例如:* t# i- c5 i0 H5 ^6 l
- <if condition="($name eq 1) OR ($name gt 100) "> value1
4 J8 b* I( ?3 ]1 g& l2 A1 |' V - + E6 `* |- x# O$ H* F m
- <elseif condition="$name eq 2" />value2
. ^! y; |3 u$ X0 M
Z. k8 E7 G3 A3 t- <else /> value3
$ |& L, E+ n% y - 7 x% d! |: x* a& H8 o6 f
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:( w) }/ k5 W! P$ R4 W
- <if condition="$id < 5 "> value13 d- k, t, @5 D( @' @) y
- 9 {! w% u( }1 \4 L2 k
- <else /> value2
5 f T* @! ^. M/ g! F4 L
5 {7 j n2 K6 a$ \" M9 \5 K- </if>
复制代码 必须改成:
$ K( w# c; D0 M# X- <if condition="$id lt 5 "> value1
4 u. j" V# P3 i [0 o) m- a& K - / u8 e/ `: _& a3 _0 l0 v9 \/ f
- <else /> value2
5 X% [: Q4 Z; v3 d9 p, R2 W; i
# ]- I: Y% p: o' o6 [- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:& z6 M2 }7 w8 _" ]' l! G5 N
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
7 W- d* d1 ]3 W
7 d+ v$ f* S% N$ Z Y9 ?- <else /> other Framework- N; n4 e' v3 {2 S ]& n( s
0 {/ v% Z3 }9 S$ N! Y! F- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP) `" I# Y) c# W- N
" O& a; s4 o! A4 S" ~( X' S- <else /> other Framework
) N' ^9 w4 f! ~, w' F! S# J - ; O! L2 g" t* F7 W0 h L
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP3 t4 a3 K! E9 e0 d+ z! Y
- : n) G- n# J5 R _
- <else /> other Framework; r4 o: R# B, i0 {) I4 Q
3 o! E$ n" H# S: W- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)! G* x. s0 N2 p6 n: k
1 z- E' W P% V; M) ^$ O j) y- neq 不等于(!=)0 M- N5 h# k+ X
9 Y* i" C7 K& N+ P/ F3 G- gt 大于(>)
3 A# A2 G' H T# ~! V
/ [4 |, Q; z7 W+ d( p1 g- egt 大于等于(>=)
) L* L8 I2 H6 z! U/ W* ]! u3 ~
9 {* P! k& v8 P7 c$ `- lt 小于(<)
1 N- N/ ~( G) [; P- r+ i2 W- _
# _$ ^) J% P( ~3 h- elt 小于等于(<=)
0 e- G! b A# u7 d2 {
% m' r5 `+ Y' W) v" {; \' O- heq 恒等于(===)
1 r# a h. C7 l$ {! j, I, `* O - ( X- a( o! m. W" B+ w+ n Q) u
- nheq 不恒等于(!==)
复制代码$ q3 P: {: s; b& f9 P1 i
5 k+ j9 C+ A0 E/ L6 |
注意7 B$ E# {: y7 V( c, E
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。: a: S- ~3 A; A6 s) p/ v" O& N) g
提示
$ ^; H. C; G2 ~+ g7 L9 J在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
* }- f/ h1 L3 `" m( ~9 c( I如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。5 b4 C3 k. i) `
% Q! k; I# j$ N# B# L" e& l |