我们可以使用if标签来定义复杂的条件判断,例如:$ C4 f- ~) i( Z3 O' }8 u4 u, F n
- <if condition="($name eq 1) OR ($name gt 100) "> value19 q7 ^+ e1 D1 v1 D* p
- * ~) E Z1 z; @: u& b( `0 Q0 E' d
- <elseif condition="$name eq 2" />value2
& m6 b5 _" E; [7 ^% s - 5 e( ~" Y2 w7 d" Y2 f; O+ c, T8 B
- <else /> value3
; R9 o) Z: O5 @4 m6 J
6 [4 I) Q2 v( x$ |; j; \- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
6 R; i' \$ h% N' D! _- <if condition="$id < 5 "> value1! I$ O# _3 [) _& K) o& w6 e
- . C' w m; C' e$ e
- <else /> value2
0 e: }- U& b8 v - 4 t% `; `5 s* I4 W( ?
- </if>
复制代码 必须改成:
; S, ]. N5 I- E- <if condition="$id lt 5 "> value1# P% n( k0 V) `
+ A) \4 E) X, W- I4 i, o- <else /> value2) W7 Z! Y: r- f- u7 I9 x
4 z: o# {+ Y* d3 y% s( i- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:5 W. i U' Q6 C
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP5 ^- B5 P. o3 F0 W' A! X9 W8 A! U5 J
- ; z/ ~* ]3 B9 `$ ~: l
- <else /> other Framework
$ w) ^- d7 e9 h, |" [# W1 {
; Y( ?9 n/ y, h8 e( [# V) S* s- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP; Z; h2 O5 P7 z, [4 l" L$ c
- 3 B S& \% S7 P& k; J# }5 T
- <else /> other Framework) S8 Q0 M8 W( s
3 L9 i% Y$ R, n" u' r- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
3 G; I8 Y ]! C( f. n
. J. A; S# `, ]5 [- a* k5 {- <else /> other Framework. k' |9 O% P. _- P
- 6 m1 I6 ?& o! I0 e2 K* m' j
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
/ v" p y- f% g) p# D4 Y2 u - 1 b8 V* g, q. }/ M4 o$ k
- neq 不等于(!=)
' Y* H! Z F* H' A& f - / k2 l; \4 M' d$ h9 m/ Y
- gt 大于(>)' A0 K) i# g5 E0 G, X! y# R/ x
- ' [3 l- s4 O/ m
- egt 大于等于(>=)2 R$ x( E: ~4 G3 x2 B
- % X; @' S2 c" n, {4 @+ V
- lt 小于(<)
8 Y* l5 U; B; P& N4 O - $ Q1 A7 B6 Q0 [/ w7 P
- elt 小于等于(<=)
( i# g7 N. |6 k* f& N: U: e
: d0 q" @7 B6 B) ?4 M; D$ Y0 A- heq 恒等于(===)
9 a3 K8 M, q- ` o7 E/ p* T1 t
6 n: k8 N& X0 }, @6 }- nheq 不恒等于(!==)
复制代码
% P2 K7 V$ @6 q7 g/ g
' w& I1 J3 K+ B注意1 L! }% B9 ~! P0 |. H1 T) E& \
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
# |# I. e1 E: t3 y P; h提示
% H" X' a) J' m$ m4 p6 @+ ]4 U: }在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。) {/ r- I; m) w7 T0 O `" F
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。4 g [5 |8 I, F3 m6 j2 W
. M4 t# J* D: o5 X- p) p |