我们可以使用if标签来定义复杂的条件判断,例如:
0 ?, \8 @( A- I! a' p- c# x, I$ U- <if condition="($name eq 1) OR ($name gt 100) "> value1! T! T0 M3 h7 m7 }+ T; v+ M
- ; Z4 F4 y5 g1 P' d
- <elseif condition="$name eq 2" />value2
0 m+ X+ O9 O1 @; y$ E2 i! h - 9 L! x3 ~0 Q4 ^! c" D9 b
- <else /> value3; U# p% q' m: c
+ P2 a4 j) f. U6 D" a( I- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:+ g( U5 {. U/ Y \# v6 W
- <if condition="$id < 5 "> value1
* q h. i; I; ]2 M( E' | [$ f! @ - 1 [0 j) p- b; G. V6 v+ n
- <else /> value2; |. }' [ n% z: @
6 z3 x) f! y. u- </if>
复制代码 必须改成:# Q8 C. t! @/ }3 B$ a' w+ t
- <if condition="$id lt 5 "> value1) P+ f' Z/ G9 h. ?* A
6 F' v. T' A5 V9 n- b- <else /> value2' s8 A' [; F* e) H/ H
- + o+ k7 R% I' G2 K2 h0 n
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
- R' t1 k ~6 Z: r( v+ {- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP1 k6 S2 V' t/ n9 X
2 b9 R, t+ Y' X0 O- <else /> other Framework" U8 y% k5 Z( V I7 W/ y
- ( o4 P% m) l/ n+ n( T
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
% `2 Z2 R, D, I- @ E
4 `" F: i8 U6 A( n- <else /> other Framework
8 Q0 q. D2 ^3 O1 U/ T - + z4 ]* R6 |; D. G9 N; Y
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP! c- z+ |9 ^/ P& R% G1 z7 q
- + F8 ?; \* g( P2 f% w! D: ~
- <else /> other Framework
$ k; | ], K! K; e$ r - ) A4 }/ ^. H6 ^
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)/ ~" j# P6 E: p; p7 V
- ! ]: K$ H- h5 W
- neq 不等于(!=)5 S' P) p! V+ T: K: L8 B
2 K' B/ B, W7 }; Y! n' r/ U0 O- gt 大于(>)
4 k+ o% U& |" J e
; @* ?1 ?4 d" p: }0 `5 i- egt 大于等于(>=)) q# @/ G T1 ~1 D y9 T
3 c# f9 @! p5 W- lt 小于(<)
Q- d* V; p/ I! y4 N0 o
- A0 J, {. v! W- elt 小于等于(<=)1 J$ J6 z, ^+ m
- 0 x1 p) r `6 \# f ?- p
- heq 恒等于(===)
$ c; ~( }2 w) p& T3 J/ ?2 P) C5 Y4 q
6 h3 c; I6 G4 B. v0 Y- nheq 不恒等于(!==)
复制代码1 ^8 O& H$ q" W4 @& ~. }; S* o
% J% _* c1 y& H8 `2 U7 }1 m( G注意
$ Q5 ?- c x6 Rcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
# n7 } j6 y( A: n( B! j提示5 ], t1 P% U% T
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。. n" U9 R n5 \$ Z/ i9 z* O% e4 N( \
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
' @) a) X2 b' W$ f- G, C. s* I+ j3 M% o q
|