我们可以使用if标签来定义复杂的条件判断,例如:
- n& {. v; [1 p0 x- <if condition="($name eq 1) OR ($name gt 100) "> value16 |- X& M% t( U n; ~) u
% e& \/ u j+ `5 y. j- <elseif condition="$name eq 2" />value2
- i8 L0 l6 i7 J3 k9 y! d9 c - 3 ~& ~( P0 V S- q) q9 Z% M
- <else /> value3+ j; I6 T7 I, S. D: T# Z6 t% q9 v
0 F) k& l+ y+ Y7 L- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:* H! }% |" u1 i( _9 p v% ~- f8 n
- <if condition="$id < 5 "> value1. ?0 _% `( I# H( f; A! j$ I
: L# x: w# }8 \/ F9 `- <else /> value2
" s, W; m+ c0 \" m2 g - + a/ i1 K2 R$ p! j
- </if>
复制代码 必须改成:/ M4 J2 f: H- L; k
- <if condition="$id lt 5 "> value1% T4 ?" O4 G4 N" t j( n% ?
7 ~5 e- ]8 I7 q5 o, }- <else /> value26 S4 s% U+ K7 W& `" T
/ X% n2 s0 L b. Z. H/ O6 S- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:9 X4 B7 A1 g" i c B$ A, q" c
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP2 b! G6 u: u. o& [$ P' Z7 _% ^
2 ]7 `0 k6 b/ F4 _4 \: K0 n. u& m" n* A, e- <else /> other Framework5 B5 j! i2 @; e. P
- 2 b3 l) g( u) v+ t5 A
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP! w+ j$ M: ? R' K, J$ a
- * _, G: [. f: }* U/ D4 L& ]) A, A
- <else /> other Framework
( y7 e" v. E6 {/ k8 Q. C$ a
) q f3 G6 o! k* |$ R8 W* Z" S2 f- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
) u8 @' ~/ r# P7 v% v - 4 p" F: `! F$ W; t4 V
- <else /> other Framework
9 s( W, b! P5 l+ N/ K* j" n
- W' c1 i( S. \- v- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)7 x* p7 ]3 m0 C6 V5 w
- , Y; g/ C8 T- t$ o- f2 V! q+ n' K5 y
- neq 不等于(!=)" e( q. g' U! ?7 K
- 5 d' i3 o0 E" R3 \6 `# ~
- gt 大于(>)0 Z8 K; g1 e+ S; r# q# I
2 S. H! h) p% @9 k6 w- egt 大于等于(>=)
+ E3 p$ P) @2 ?! w
" }7 X* p7 v6 q- lt 小于(<)
) s d* R3 d% w; ]$ @ - % }4 W% b ]3 w! N0 s8 g# n4 [
- elt 小于等于(<=)
) \- h+ u. n- ~/ f, t; ` - 1 h( t, P9 l; H, x p. c
- heq 恒等于(===)
% e* V0 u2 x A( P) `
! ^* K) ^( q! m f* [4 N) X- nheq 不恒等于(!==)
复制代码$ x' g% @9 ~$ _$ d! g! S. X6 m
) ]( B8 A% R: C: B7 X注意* [5 }& N9 G9 [) t
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
. j: E8 y9 j* A" H( Z5 K: h提示
8 e( \- X6 C+ H* h在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
: R, K- x# h; Y5 s8 I2 \如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
2 K6 _) F- J: z9 O( G, z
8 q/ m: u1 `9 }6 }! S8 } |