我们可以使用if标签来定义复杂的条件判断,例如:
9 r6 o$ A6 Q4 L/ F3 L- <if condition="($name eq 1) OR ($name gt 100) "> value15 |! B5 [! d5 a( G+ |
3 ?' \8 Q0 s. s4 {) x* g" l- <elseif condition="$name eq 2" />value27 u2 J* |& V$ z- g
- 6 Z; V) {( e+ S& p# I- e
- <else /> value3* Y) h" b; }/ T+ c- E
- Q) R0 E& x" A, r2 }- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
+ w* x7 ]1 @" d- p& |- <if condition="$id < 5 "> value1, w7 j) p* G: A: ~ u3 h6 F
: s9 J: ?7 p$ s- <else /> value2/ r4 `9 V3 m# W1 \1 ~ u
- " y6 j+ E2 N. h/ i
- </if>
复制代码 必须改成:
! H% z5 }3 [3 y7 w$ z: S- <if condition="$id lt 5 "> value1
" [* h8 r' _4 ~- D4 X
8 _/ j& h( g2 K& {! B# o$ o J- <else /> value2
2 W1 K( I! T$ \
9 F1 b+ e2 v2 f( G! Z) o/ g- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:; d! ? }, h+ `' |
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP! B) [6 |6 b5 @# y8 @' j' F7 x
- - L2 J, p" L1 T1 q+ c* _8 m
- <else /> other Framework& w9 D. I- Q( O; M
- $ `' ^, t3 S9 d% y6 j! I. V
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP; D7 C3 w( L5 v$ _1 W
* Z0 r4 X; f; b3 g1 f: E- <else /> other Framework4 w( l5 E: V: z: P$ x& u& P$ _
' o9 U0 b" e0 m0 g2 ~* K; e- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP! ~- t' y2 D4 R+ d" v
- + |, q5 Q7 U: d# D& m
- <else /> other Framework
0 E0 m8 T( K1 S/ M+ T3 ]
" i% e7 |6 A1 j6 x5 E- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)2 w+ K/ H+ G' C7 P5 G. i" N( E, t& u
1 R- V# f8 C7 T; `- neq 不等于(!=)9 @& d" y* C: y4 [0 F
- 5 C% O( \2 w' g8 `: _
- gt 大于(>)
2 s* D( J. O- ]8 \; F7 W7 L, X - ' b4 I* q. f$ y) y; ^
- egt 大于等于(>=)3 ]3 X2 S5 v. w1 Z
- & P+ [ t& i& J- e, |- ?; [
- lt 小于(<)* _5 M2 v6 o, n) i8 s6 r
/ x# {& m m2 @7 J% I7 J- elt 小于等于(<=)
5 P1 I! V9 [4 K7 }2 Z0 h
; Z$ }/ S0 n' R9 n; b+ P- heq 恒等于(===)
w) w# k& O! |- V1 i) U/ p - ( ^: P9 G4 j" d2 W
- nheq 不恒等于(!==)
复制代码8 L6 w" g ]4 k) \' u
{' y5 G b( d, c4 ?: C注意
1 G0 i: k5 N/ fcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。+ m; b8 y" n( H
提示
! t) c0 ~& X# h" D; o, B在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。6 D6 r6 {3 ^4 @* F
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
: p9 K- T2 T* S. Z4 u
" R0 _ j$ d4 U0 o; w" H |