我们可以使用if标签来定义复杂的条件判断,例如:
7 p/ {" A- X7 v6 @2 l6 C- <if condition="($name eq 1) OR ($name gt 100) "> value16 V7 \, z* F n+ g8 u7 j
: V& R2 _ E; R$ E- <elseif condition="$name eq 2" />value2- u5 h( n% k" N: _ a. b9 N
8 V% ]( j7 W1 {. Z1 n+ o" J- <else /> value3
1 z" D ~) B: A( {
" S) m4 B5 `- c- y9 q, W ^7 D- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
% ~8 _1 ?1 g+ o- <if condition="$id < 5 "> value1& @; N! q' J& J6 _ j3 d
- * U; `8 @5 G/ X4 @" \6 T
- <else /> value2
* X5 x/ A; v3 } - 6 x; n! w& `. b0 f3 A s
- </if>
复制代码 必须改成:# ?9 f$ P4 j5 ^
- <if condition="$id lt 5 "> value1
9 |- B2 Q5 p& O/ M, J# D3 e3 V' t2 N - + b/ c' n9 F8 T& F3 f
- <else /> value2- @# Z! i( v+ ]! m* `
- 7 p$ G9 ^! }- J& u$ c0 @
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
# \; h9 Y# W. D8 ^4 A. h) _- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP" Q2 \' W, Y! \* J7 J' P
, ?$ m; B3 ~& Y1 ~- <else /> other Framework
* z* C) s* G4 L$ A; _, V - 9 I$ g; u2 |3 b$ ~" S, O) J4 A' V
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP* K) \/ G3 Z+ x5 z. O$ s
- ( c4 W% _# D G" R
- <else /> other Framework
/ M* ~, h3 s$ H" |+ c) y - . E. j' t4 X4 S7 c8 |+ l
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
- e* N: \" ] [( g9 V' ^
m$ a) K2 } D: V2 f) q- <else /> other Framework
* I" E7 w P/ y) c6 y7 ^
7 o: }8 V E0 _- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)' h: M2 n5 u1 m6 q
- " i' J8 M# m( ^
- neq 不等于(!=)" ]% _+ o& ^1 z$ n9 J$ `; I
8 I) y7 |3 \' ?- gt 大于(>)
/ r( U- m! o4 q2 t - 5 v" u& K/ W# T' z, C" D) H
- egt 大于等于(>=)0 n( R. v0 x# i; F% g% I& w* o
- 0 q' ]9 i1 A) w- {' g7 s; {) Z
- lt 小于(<)3 @" f6 l. r; O
% f/ [: i1 E7 m8 f& X- elt 小于等于(<=)
! ]: p. P" Y+ h# z) i! k - 8 l& ]% j) ]; C& P2 }
- heq 恒等于(===)- q) j5 x5 v$ X, ]6 ~
0 V, I2 Y1 R9 d7 @* t- nheq 不恒等于(!==)
复制代码
) E, K" p* T/ W ; R7 z S4 Y; {4 Z1 p" l
注意
# }& j2 h" t0 y6 A6 C+ Ocondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。" D/ R( n1 d/ Q
提示
`+ w$ G* d7 d: V0 m4 X在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
+ K& B9 M, ^; p. o' z8 P1 q如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。9 b2 b" t7 D8 h
2 O& b; |* ^+ Y" K2 G9 P. e
|