我们可以使用if标签来定义复杂的条件判断,例如: M6 C# }/ @+ `8 e
- <if condition="($name eq 1) OR ($name gt 100) "> value1: q* u7 w/ L l8 t
- 7 d4 f' a9 n# m0 @( e( ]6 l
- <elseif condition="$name eq 2" />value2
1 R0 \9 o3 l! }6 B1 p2 R; ^1 `- f- s - 0 F; }) ?+ f# B" g5 q+ U( b. z1 M
- <else /> value36 G) U; e4 ~9 |' ~
! A" `* E5 H9 I7 g; d5 X- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:/ [2 K. `$ T2 A) f) `
- <if condition="$id < 5 "> value1
% I& z9 K3 B! s+ C0 u' y( k - ' y( y1 `5 l7 }# g, [# O
- <else /> value29 @ o- Y3 M- l4 n# F" }
- * H$ P# o$ u1 ~+ g2 ^
- </if>
复制代码 必须改成:
. r9 Y3 T' ~/ e, |9 [, c- c8 f" z8 l* o- <if condition="$id lt 5 "> value1
5 u4 k- ~- ~0 J - 5 i' [; w+ W; g4 V
- <else /> value2
3 O$ D3 i6 u( O; f1 r) `4 Z0 b
6 H* z+ A% e% L: D: A3 x! g, F' ?3 o! M- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
6 n6 I9 F. y9 I1 ]( n- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
e" T# p: v/ N* x/ ]# T
6 A/ e) F: \ W& ]- <else /> other Framework0 f" ?0 N' f# q: N
- b5 S6 N1 a* a) P, |* E- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP- x+ ], o4 A2 n6 I
- W' K. ~+ t/ ?4 r- X A0 b) N
- <else /> other Framework# H4 c0 z2 K1 j+ f& b% X8 B/ d3 x' G: f
/ [9 Y' ]9 h. [5 T3 j- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP+ f9 b& n- l3 h( \! u7 S6 a
9 L* N8 ?. h V( R# `! Y( N- <else /> other Framework4 U O8 B4 N1 [& V
. `$ Z% {7 C9 |1 L! l- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
L y6 J5 @% l1 N+ G# X8 s3 w - ! v4 ?% p4 n0 Q1 X# K9 Q
- neq 不等于(!=)
7 B' \2 O8 ^7 Y
/ ?8 g! L, p2 B# u. C* x% K- gt 大于(>)
% I; V: ^* m$ ]# z3 O - 7 }2 A* `' D* ]# z" S
- egt 大于等于(>=)
& ^+ ` j0 L- W g
3 y2 Z& J1 V$ {' T' N- lt 小于(<)1 x7 E ?; J* F1 z1 v% I
- 1 W* ?( m& E) n$ W+ w4 g. M
- elt 小于等于(<=)1 M. q2 {: c" G) Z2 p$ L
- 6 U4 a" c9 @' N& [* g, A% a; ?
- heq 恒等于(===)- H7 e# h& p! F3 f
" o+ b* f5 B2 z$ ]" I- nheq 不恒等于(!==)
复制代码$ ~9 [6 I! @ j3 @3 J9 T% l
5 i* \4 M3 h0 n8 a0 ]
注意
* l& z) X" p+ D3 Y1 |! Wcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
2 Q) c" ~ r7 P) f( X提示
7 v& X# t, Z" k: s) I/ X5 s在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
' E& z' P E' X0 s- O9 w如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。, I4 j- j/ j5 ?8 ~4 c
! [+ q T: x9 s' q5 |9 r$ m- m. R+ Y |