我们可以使用if标签来定义复杂的条件判断,例如:/ J! R0 q1 C, X" h
- <if condition="($name eq 1) OR ($name gt 100) "> value1
R" V- Z3 X1 Q6 j2 S - 6 y& |# ]" p8 X5 q% L( Q$ L% K: C$ j
- <elseif condition="$name eq 2" />value2
3 P3 e- w0 F( s2 v0 [# D - . p7 N9 s5 b% E8 ~2 J" H& e
- <else /> value37 e7 U9 P6 }% u' b1 T
+ X8 U; l6 x- [3 A/ v; I ^- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
; N" p; H1 h; G- <if condition="$id < 5 "> value1, }+ U. D$ S- E* E8 X& ^
- & n T6 ?+ y+ `' \9 E% i
- <else /> value2
3 ~7 S$ N, E6 s! l D8 t
0 C( S4 V. R; I/ f: {) e7 D- </if>
复制代码 必须改成:
, o: e' ^ ~6 e( H5 J3 L, _8 r- <if condition="$id lt 5 "> value1
4 H$ ]- T# c; K7 K - 8 c# J+ {( E0 W6 w. v2 L9 U9 P! k" g
- <else /> value2
) P9 D4 K& a% p/ g
' d( L/ P0 r* k. A% l; e- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
) ~7 T) q7 o+ D* A/ b3 i6 }- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP( B5 ~ D8 P# p7 O# I
5 k& W) M, K% K" S; n- <else /> other Framework
5 b7 ^/ d. M2 _4 S1 v! @
4 S! ?0 C: t, F5 q- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
6 K; w9 J K# e" n3 U6 [6 j
! h4 H5 w @6 W! S7 ~- T4 F- <else /> other Framework
1 d5 D5 z1 i2 k$ N' I D8 M - + P8 {2 M8 {4 T0 H A f m
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
2 e' w- |. U5 M; Z
6 _" r& l; z8 E& C& \1 s- <else /> other Framework
! c# X2 A$ D, g) } x - {: @' W2 f1 ?2 w% S! P- \ u
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
7 E9 X* Y- s, q9 @6 L - 9 Q6 \7 B. d% u- t o# [) Z
- neq 不等于(!=)* |( X$ h5 M) Y: F; P9 y
1 u# a/ w6 C2 b& c- J# H- gt 大于(>)9 G; W x b- T* L
- 0 `& ^' @, m+ U. ^6 g7 V( B3 L
- egt 大于等于(>=)8 q5 R% h/ u; g+ h* ] [1 U
1 x4 }3 q0 y' F% ?' t: b1 l3 }- lt 小于(<)( i. U o0 R7 a" s
- $ g7 H+ j' T' b* r0 ]+ P; {* d
- elt 小于等于(<=)
* e9 `2 z" l% C
: v" Y$ o( A- _8 D4 K- heq 恒等于(===)
, F+ H! U. Z( z( I) @" q$ r7 K - ! x2 X# }! Z3 I) ^7 S7 e. n
- nheq 不恒等于(!==)
复制代码
G; L% w! e+ \4 l
( O7 Y$ t6 i' G$ Q2 [/ j" L, O注意
0 ?/ `1 d1 ^# f& Xcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。0 t5 I8 @5 @4 ^
提示- O0 h3 r7 [6 L! Q. L) |) J
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。: I7 G" |9 p% \& i
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。% @. j/ |5 k) ^2 c' k
7 C6 _, u; j4 v% f6 l* v5 e |