我们可以使用if标签来定义复杂的条件判断,例如:0 s' R- d$ x9 |9 d: e0 N$ g
- <if condition="($name eq 1) OR ($name gt 100) "> value1
/ W. @7 Q# C% k+ B6 P' k K - 3 ^% s5 V) a- m. u( ?3 ~
- <elseif condition="$name eq 2" />value2& Y+ r8 F' J' Z) _+ U$ f
- 9 K) h) W: B, S. J; J/ S" q- \* Y9 `
- <else /> value3
5 p, ^ Y& p3 a+ f j8 N* Y - 9 h1 ^4 O" F: e; e/ |
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
9 \8 G) q5 F* U& I. {( j- <if condition="$id < 5 "> value1
9 y4 U+ |+ k* V6 P! E. K - * n3 B- s' U* o+ h, @
- <else /> value2
: I/ l1 \4 V0 h. q8 k - 9 y: T/ ]# ^; W" N% |
- </if>
复制代码 必须改成:; o% J1 | M3 H% O4 y% M9 S7 u' v
- <if condition="$id lt 5 "> value1
; w9 N T6 Z% }" }/ o/ z
) n- M; ^- ^ j1 {- <else /> value2; f$ G+ F; Z0 z3 d4 v3 b8 {+ p
/ N8 F2 ~7 `( g6 B7 z- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:, `+ I' D9 E1 S" A# S" j9 `
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
3 z9 R5 H1 I& ]. O; N2 a* n" U! @, Y - + \/ M" o }1 W0 K' V3 G7 ~, _; k
- <else /> other Framework' D5 h g2 E7 l# ]+ V/ L2 t
8 D3 p3 [ A4 ~4 v. _- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP8 A- }' `/ T1 Y" o6 z+ ^
% X# w- c) c& G4 R- <else /> other Framework* `+ F/ H! m) \1 L. f
# W5 u8 d6 X% H2 |7 ~( M5 t$ M- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
5 {1 w8 q8 B9 c% b& K, D
3 {0 r2 x5 J( a1 s4 q- <else /> other Framework' t0 w' z0 R% {1 `
- / k, W3 e% t3 q. F3 x8 f+ x. e
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)1 A: R5 t$ t# Q
- $ F- k# k' e/ o @
- neq 不等于(!=)7 f- t* l: \5 Z& A( @
, ^' Q- I& X6 F! z0 @- gt 大于(>)
% L O9 i8 \+ k8 S- p, s0 t/ f - , O' M) |- H2 @) C; ?6 Z
- egt 大于等于(>=)
- j; `. S9 E5 \; O5 Y" p% L - " p5 |$ N! |! H7 n2 U2 h
- lt 小于(<)1 W( u! X$ w M! i, G3 l4 T# A: D- i: D
7 D+ V' |6 g- k& h" ?- elt 小于等于(<=)& S$ A2 ?) V' Y2 D
2 S. }7 ^& `& {, s! }$ j3 f- heq 恒等于(===)
6 o0 e. y! s! _1 w2 O& r9 S8 d% @. { - - O [. h" {5 S1 i8 v
- nheq 不恒等于(!==)
复制代码% l3 p3 C6 g, F7 J8 k# q
/ p I* @( ^+ V8 V: W
注意* U/ ]" L( P8 ?& g# p) `
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
2 e+ D* H2 ]: F1 \8 z% ~提示! w' |: u6 X% {4 z @
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
" m5 u8 q4 u& c& i& p2 R如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。/ h, |! s9 f2 a# Q6 O% M
, Y: f- O( ^9 _2 T" y6 ~7 i |