我们可以使用if标签来定义复杂的条件判断,例如:# @! N1 g9 }. N
- <if condition="($name eq 1) OR ($name gt 100) "> value1
( Q2 m2 s" ^. D1 I" @. S9 P
9 g( U0 i2 p9 Q3 L: j/ x1 K" {- <elseif condition="$name eq 2" />value2
% t/ s$ B2 A8 ^$ t5 z2 }; x - 2 q5 J0 n/ g" \, a3 [0 c# U
- <else /> value3) Y1 P9 ]6 l- Y7 a
3 x9 m1 T9 T! C0 [1 \3 y- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:# Z3 U. j8 ]" U
- <if condition="$id < 5 "> value19 K+ @$ H. y# T) D! b! H
- ) U% I1 o! a3 A4 ]) f1 f
- <else /> value2: j' m+ h1 B* o' h3 }
8 M9 V9 g% |4 H/ B, }4 t- </if>
复制代码 必须改成:+ [# R4 R5 {" G/ ?" f
- <if condition="$id lt 5 "> value1
6 R! Y2 Y& D8 L! A - % T* E0 P5 P( U& M; C5 U2 Y, a
- <else /> value2
/ |/ u( ^! j6 A- N4 e
, }( L7 c4 ~1 _ n% O( r- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
% G5 K' r: ~- p1 |( t' h- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP7 O C% e7 |. V. r3 Q
- * I, Z' i3 D5 ^% D0 E
- <else /> other Framework
. L( t2 h2 |" k% P1 P- W8 {
. r- |& L# x9 Q* V- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP- z- p3 ?0 B) p* y" i; q6 {
, x* x) n, x7 h1 H: ^& N6 x) X- <else /> other Framework. P! Z7 e6 Z( l" A/ c
- ) G5 o3 R$ q% i: K/ |" t
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
# T& o, @5 V p
. r) o! f7 l) B4 r- <else /> other Framework
1 N+ g0 U0 P; Y! `7 @ - " o7 V0 o `" Q4 C) o
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)2 @* f) `7 X& |# w: O! I
7 g' w3 U& i1 b7 X5 h- neq 不等于(!=)$ n: ^; d& ? o
2 ^8 T" g8 _ _" t7 o- gt 大于(>)7 u! p0 l2 k) [2 P9 ^
# N, S1 z7 M! a3 @# N. x7 f3 o9 ?- egt 大于等于(>=)( m4 s# `8 Z, w
- ! U. h. h5 _' D- y3 d k/ r
- lt 小于(<)" n: m2 P7 e: }( {$ D. ^1 D
- ( V# ~: l5 S: z* w2 g
- elt 小于等于(<=)
) s0 Y8 _7 n" c
! A9 W' t7 n; P) g% I0 ~, P, `& `- heq 恒等于(===)
( T/ ]; ~8 @# `" U, [; N' \2 |
# w X8 b& U, Y) T& O- nheq 不恒等于(!==)
复制代码
2 U B; Z; {/ E# C* ^! H ! ?' B, l! W. \+ X. o- b8 b
注意- K8 [, _* r/ T' p, @, m; a8 I
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。6 G& N1 B5 w) _; J" s& v3 @ E5 D
提示( i. X+ P6 {+ I& o/ q7 U
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。 E5 C; T6 t' a! n! o) e0 K F
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。2 i( d; u% d* Y. I! h& v) z
" }% T3 B! d5 |5 } |