我们可以使用if标签来定义复杂的条件判断,例如:
$ C( u" Y7 Z1 k) f6 G/ `: w- <if condition="($name eq 1) OR ($name gt 100) "> value1
$ {9 F# z1 z8 d& F/ k
6 p3 M3 N/ [4 W3 s) ^7 g8 O- <elseif condition="$name eq 2" />value29 ~# O( T: x0 D: [- T/ F5 [+ y: N
- : c. T9 Q0 b! Q! I7 y
- <else /> value3
" o) k, ~: m5 U$ E2 @
: n" B/ n) v0 ]& \. Q- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:0 h6 G" b% m5 E2 J# Q/ w( }
- <if condition="$id < 5 "> value1
7 X# B) O6 V, L" u* o+ f - 7 |8 L7 \4 t2 y8 n
- <else /> value2
- x- ~+ ]& h7 ^( U& o, Q+ T6 r1 P/ w - 6 s) Q7 `! t/ s7 R5 q
- </if>
复制代码 必须改成:
+ U1 [# Z3 V. @$ z, {- <if condition="$id lt 5 "> value19 E w/ t- Z. b% t: a
9 D( S; j1 e* {2 S0 A/ O% m- <else /> value2
' j. o; x( j3 B5 A9 Y - / O; R( B/ p6 F* f0 Y- k o
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
4 l6 {9 Z. A; J/ l: {0 }, ^6 e2 H- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP% K! n# g, R! M+ \8 t
- 7 Y. H6 E. C3 A8 H' O+ P
- <else /> other Framework1 i+ I m0 q# v: I# e O. ^2 S
; k) p. W3 c+ X9 U6 z& v- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP, m' o& @$ |/ j8 p; _' w$ h
- 8 `2 _& i) d" Z2 ?8 [ ]% @& a/ N, k
- <else /> other Framework
F3 r. D2 ^ ?1 D! Y+ T3 ~) q - , O* P4 y! n; x" B
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
+ ^, q7 B3 H" J: n. V+ K1 b3 [- o/ l# f - ! T% M+ T% R3 e: U
- <else /> other Framework
/ @+ X- F, @: t4 N8 n
; |9 c) I# R! w& @4 y- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)5 _5 C- `; L N+ \
- $ |5 R$ c# ~+ A3 u+ z! t
- neq 不等于(!=)" X+ z* V4 Z0 h2 T# z
- . w9 ]3 N! x- A! U5 p0 G
- gt 大于(>)4 o$ j6 y; _. o7 Q5 r" y
+ _ T7 ?# s. D- egt 大于等于(>=)$ i5 o1 \7 N0 z) I- a9 I r6 x
- B+ S: J% \% U% W) n- lt 小于(<)3 m2 j l$ H9 T6 ?) F4 D! ]
- 8 R2 |) G8 `2 i0 I! z8 s( V
- elt 小于等于(<=)# `7 C% C8 P* [- y2 _
- 6 L3 i1 v# j1 t& q
- heq 恒等于(===)% W- {5 B0 p+ o2 r2 ]
- ! z% I$ q; G" c: D% l A3 k0 m
- nheq 不恒等于(!==)
复制代码# V) ?) v0 e9 `* H
- P# }" I5 Y( j8 E0 r& f2 @
注意
" k+ F, K: b) v/ jcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。/ E5 C7 ~6 V* h/ O; f! ^
提示, t5 m4 R( ~" w3 ^* b
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。 q) A4 y: k1 b; c G2 x) l3 C
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。 J# ^2 {5 C5 v' I1 [
+ V. `# Z2 K( C2 t& n
|