我们可以使用if标签来定义复杂的条件判断,例如:
) s, `- M2 \* }0 U6 E- f, C- <if condition="($name eq 1) OR ($name gt 100) "> value16 G/ L1 g0 Z) w' w7 ?
- ) }* h' d' o0 K6 O
- <elseif condition="$name eq 2" />value2: V( ~. J+ G8 V* @5 X$ L0 V. I) W
- ' ?* O0 `: j1 K$ H' N
- <else /> value34 e8 ^" P7 ~# |+ S
) k# W. m1 d3 t5 J4 p: a- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
. t2 r! Z% l" d2 U4 x2 |5 G) d' M- <if condition="$id < 5 "> value1& P6 F4 n+ R0 }, ]/ a1 w
- & G1 d1 P6 p1 L. k0 j" V
- <else /> value2% `* F x5 S8 a' ~
- . l1 m& U) f' c$ W/ |
- </if>
复制代码 必须改成:) U+ N* `; H, `- {
- <if condition="$id lt 5 "> value1
- S8 i$ M4 P; a1 y+ x& K- M; g
! R( U7 b- n7 ]# C# {: n0 u1 h/ L- <else /> value2
2 f3 `$ W4 y0 S - / W; A9 M6 q" |, i K: ^4 e
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:. F3 Y% g9 y% l
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP3 W4 U3 S% N( c* A: r: `, M
& A# I8 R e& C" ]2 Z$ w- <else /> other Framework: u2 H3 x0 F0 H& j
& Q7 x* M- c' b* b; y- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
4 Y2 B2 o0 ^9 b
! _+ S/ m, K( g4 O- ~) s* v1 L- <else /> other Framework9 H4 m6 S8 V7 Z
% ?0 S( U* C; R3 n) r4 W" i1 h- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP( m$ x$ S z P7 N& w X$ ]
; ~, |' \9 H$ N& L4 `- <else /> other Framework
2 l! j9 b6 {1 d+ |. L
1 h7 E' q M6 l2 i( v) d+ n% m- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)* V% y0 q- o- ~- s' T) Z
- * }3 g$ |1 n" l2 ~
- neq 不等于(!=)
) ~: q( H: g I+ L! b, Q - $ O0 V8 Z& D; g( u( j
- gt 大于(>)
5 n( t0 Y1 l( a( c% m2 I
& U; c# b/ M, y' D' d- egt 大于等于(>=)
( K! n7 B, H5 m6 k/ a' Q$ [
, P$ `# R% T4 r. b. K" S$ b" }1 Z5 p- lt 小于(<)
U8 j4 h2 t$ n: { - - X8 Y* g7 H+ k8 V( h
- elt 小于等于(<=)2 v* J& v" B4 l' J( l
0 |/ ^ G4 s7 T7 {2 V- heq 恒等于(===)7 M7 B) M% q" C5 x: I/ d1 O# ]
% a' E- f0 r' s: o0 s8 G- nheq 不恒等于(!==)
复制代码
7 G# {7 ^) _* m |" o * ~7 n" A: K; X+ X8 T( I! K$ L
注意2 L3 m' e+ L/ c# n4 p1 A# M! Q
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
) U0 D: K4 _- {& S* _提示7 B# L! d# z' w. E
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。" a& x' H$ x! z% I; X
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
0 a) w- s2 G( |, h4 t% d% I1 s5 X, e" |7 r8 r. P
|