我们可以使用if标签来定义复杂的条件判断,例如: A) Z$ A( Z* I2 ?4 f
- <if condition="($name eq 1) OR ($name gt 100) "> value1: i- \ _& u, G& d( L
- / x$ D0 T5 M) M8 m$ P
- <elseif condition="$name eq 2" />value2
# Y" N+ i0 Y* A3 I9 M9 _
; s7 [1 S9 D& p: ?6 X- n$ Y- <else /> value3) W7 @0 X6 o* W% p) ?
- S& g3 `" w/ Y- B3 `- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:/ ]& @9 f: a, Z z
- <if condition="$id < 5 "> value1& @8 s# [3 _+ ?# P$ ]& Y; K
- ) `9 ?% L6 {. f, } v- ^# U6 U* w- U
- <else /> value2
2 t' h6 K+ F# ?7 A* N5 ]3 ?- q0 `
/ D$ ~4 L: z2 P1 I0 k3 ^- </if>
复制代码 必须改成:
3 Q1 t F2 z5 R( ]0 f# `" {3 o# ?- <if condition="$id lt 5 "> value1
5 H- c* l9 F/ U6 f( Z# G. I - ( O I& I' K2 n8 o9 b
- <else /> value2
9 g* @: w! X: z - 9 ]- U7 e+ V$ j+ ~* K; y
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
* X1 F5 T; j& F- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP: `8 P% v1 u8 p0 o3 n2 J: W
& F/ v8 n7 r5 S% |; A- <else /> other Framework h7 }) ^' [) `' Z7 @
( E6 R8 R! p; ^: c7 \/ b- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP# S$ L1 b2 X8 u
- 6 x" ^$ w# @! u& d1 X) e# o$ [
- <else /> other Framework
7 D: w: h2 A, `7 C+ c, Z8 T+ Z - 5 d6 X% w ]) B6 h% ~, P# U2 o6 c1 d
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
& R. _. {+ o, w& [
: U: _: h; {; V1 D3 z O- <else /> other Framework
1 h' _. s8 ~0 S - # Q+ ?& J* w' f; U
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
8 x/ J" I, z5 X( d4 a3 w4 y" [5 H - 7 x( j+ s! ^9 }; a3 f, r9 ]
- neq 不等于(!=)3 R3 T N( w! d+ h m, D5 a7 x; N
- ) l/ T( b3 b" D2 U' H
- gt 大于(>)4 k1 t6 c. b" q8 v% a) W
) g* ^/ n+ F, @1 A- egt 大于等于(>=)
9 ^2 u' F: V6 [5 X { - $ k( O8 k, }2 a
- lt 小于(<)! h2 R% E: P/ G# c
- - N( M, p: {2 Z2 y
- elt 小于等于(<=)
9 i+ B+ K' \7 C - . n1 x. f1 c5 ^4 ]0 T0 c2 o+ h
- heq 恒等于(===)
, ^) x+ q+ j' B) O9 O6 _ - 6 G$ ]1 m+ {2 i
- nheq 不恒等于(!==)
复制代码
# S% C; u7 _: v# ~3 l" i9 N " q7 g9 C, K" C3 K
注意
& ?5 i/ \# L; @; i6 h+ e7 Ycondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
: q0 Y7 G- M: p& f1 F1 q4 N提示. O( H5 @ S0 z9 F' C1 ~( d& _; R' y, B9 n
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。) }0 ^' ~8 |- P$ P! K$ `; Q9 }
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。# }* Q- C9 {" J6 n7 x
2 l, W# t% v& P2 o |