我们可以使用if标签来定义复杂的条件判断,例如:
4 e6 Y1 l( J% r- <if condition="($name eq 1) OR ($name gt 100) "> value1% z4 `0 `; G- w
- 1 J; Q9 G: T! s e
- <elseif condition="$name eq 2" />value2
% R' S+ l" v: }* @6 {% x
, ]/ |% K8 B/ o5 r) s( G- <else /> value3" @0 C4 P. n1 R8 e( i& X2 |
- 6 h6 d1 B7 G9 C7 Q' i2 N
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
8 q. a6 c* [5 m2 S0 r# o" A2 g7 S- <if condition="$id < 5 "> value13 u, X3 O' E5 i! C% ~
- . o0 R9 n; v: `" K! f" ~
- <else /> value28 T2 F9 @: Z9 n6 \& y
) |0 u( v/ |* N- </if>
复制代码 必须改成:
; V" v( j% c6 r' [- <if condition="$id lt 5 "> value1
. K* x' C9 p+ i+ N8 @. w6 t* V
7 h' ~" `) u( i8 \: L" h2 N/ ]! ^- <else /> value2
G6 h2 x# _) z Q
! G7 J( u/ Y# |: j9 b) l0 H- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
% M) n; a8 s p; ^1 F' l- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
0 w4 R+ D/ }+ r( b/ z- k - " h+ G1 E8 l" y' n( B4 y
- <else /> other Framework
j& E# N" h0 }/ w& S' P4 ]7 q- R - 5 e1 C7 C2 X8 v9 T
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
# A& `3 A. w( Y
1 W+ ?$ j! Y5 M7 c( J, e' s- <else /> other Framework. u, [" K5 x) Z0 y5 G$ m; X% ^
- * g) c0 e9 h& N: H5 I. T5 ?
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP& t0 a' [' e8 z
" ?- H7 m2 p! r; h3 k; d3 o- <else /> other Framework) s* A h9 @) ?$ B- H9 N
; w/ W3 g4 I% K+ e- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
" ^1 U$ j8 }: i2 @ s( y - , X/ W* ~- M2 @* o2 e
- neq 不等于(!=). X% h9 ?2 j( h9 \3 k
- 8 E2 k, U9 L! N% S' X
- gt 大于(>), K2 N" g8 v* ^$ t
- + n( Y( N3 a( ]4 r' T0 o
- egt 大于等于(>=)
% v1 x1 H7 n' Z
9 C# c, F% t( m* j8 H* X4 L- lt 小于(<)- A7 C; B; U* C. Y/ F* S% t4 ?
- 4 q W* ^1 K3 ^& m$ [# D
- elt 小于等于(<=)
7 E. I3 A5 {! y7 p6 d1 j - 1 Q3 Q I9 f1 T3 m' ?. x
- heq 恒等于(===) A$ p2 ~$ z7 U+ p* a
+ Y P+ @. ? R4 r' I- nheq 不恒等于(!==)
复制代码3 |0 C- ]0 S: ?0 N4 Q* V. h% l
. A- t. T' k+ ~. ?3 o( ~' {注意
% u. K. a% A( j) E* F2 ~/ S) R6 g# Tcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。% e/ g: q; E% d/ o! E4 k
提示8 ]/ A2 p; K( [, P6 A6 p: [& Y
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
+ T- p+ }3 j! E5 t; i如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。% E$ X0 N' w- l4 ~
+ w) v4 P+ v) Z; S1 O* M$ G
|