我们可以使用if标签来定义复杂的条件判断,例如:4 c: R' I) Q) ]& Y
- <if condition="($name eq 1) OR ($name gt 100) "> value1& R: Z1 o0 w( s9 g
' b% C' H; n2 L4 Z- <elseif condition="$name eq 2" />value2
. i: Q) z1 @# y6 W- O/ i$ ^
1 V: R7 k+ I* E8 L( @- <else /> value32 a4 q3 W2 M( Q
- 6 W5 b4 d; L/ h/ O- K
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:$ o; C% h w6 y# e
- <if condition="$id < 5 "> value1 a% }/ [9 Y. m8 C; `: h9 M
6 W3 x* {- p$ T; N% t- <else /> value2
5 l9 J8 a& o6 x - / w& k3 H, I F# o9 F
- </if>
复制代码 必须改成:# H" E6 A2 U0 R4 o
- <if condition="$id lt 5 "> value11 T+ s) F& m. r# k0 P% y( ^+ \
& ^5 b* r. c- M7 t" A, j& K+ v/ X9 N- <else /> value2! u0 G: Y+ S o0 T
- ' l, E& m1 U- t, R) y% u) m/ v4 i
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:% _ R+ }5 K `# B
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
9 }7 G" H( P; x - & p4 L$ p4 w1 r* I; w+ s
- <else /> other Framework) `4 C+ g% G5 |/ t
- + O7 e; }! z6 m6 ]+ y% t9 l
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP/ m2 l" ~7 Z$ _
' Q" N3 z/ z! v( h9 C8 U3 Q- <else /> other Framework& B7 Q+ T: C5 g" X2 H; O
- # N! i3 w# v1 o" F
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP: U! Q0 B! ~3 t5 e* B3 _
# t s" ^" v. \! W! p) k- <else /> other Framework
+ ?3 t5 M6 h! ~$ l. @7 D; @
! }. B" \2 ?3 c: v- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
6 d) W: h* u' }& I- f - 9 u! L, ^3 G2 c s
- neq 不等于(!=), e' j3 a- n R; V
* @% G% Q3 P+ M3 k: C( \- gt 大于(>)! s6 ?( M. {: `9 t0 @5 ?
- % u1 M+ {9 Z) M* ]+ r+ k& k
- egt 大于等于(>=)4 w4 l0 @& Z4 N+ J& Y
- : \/ A3 l4 ]& X: v
- lt 小于(<)" O' b& Z: E% y+ e
; h$ V5 A/ p) R8 X9 C- elt 小于等于(<=)7 a* _! `: v6 k0 T
- & p/ k- U. {! ^5 M+ e1 h- ]
- heq 恒等于(===)
7 o8 P# i: P U9 W - - v, u$ S1 p6 _% [8 z( h
- nheq 不恒等于(!==)
复制代码" @+ c# l, u( i% [8 K# M. U
1 T2 k( Z3 i- a; @" {% u
注意5 M+ O' H9 z4 o! o& W' S
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
$ |5 I8 X( J, J, b提示- J2 R9 |' s, Y) j# Z
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
9 @1 y/ o, W0 w4 c1 U4 U" M2 ^$ B如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。+ d3 [8 s. k$ m$ F3 b! X }( u5 Y
! Y+ q Y* y- ?1 j3 i
|