我们可以使用if标签来定义复杂的条件判断,例如:
1 T- }# [! t3 }5 ]- w% Z/ u- <if condition="($name eq 1) OR ($name gt 100) "> value1, b/ E# B4 r1 Q3 t
- , V# i( y) f* r: E0 J: e" c' y
- <elseif condition="$name eq 2" />value2
/ Z% _: J% t+ h) l# L3 U
5 P- S1 d: A% b9 X$ x* h- <else /> value3
/ S) Y9 v3 H7 u7 l4 @4 C' Z - 8 z8 ?6 S, P4 \2 Z# e M) |
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
# f7 k0 Z, X% y- <if condition="$id < 5 "> value1
' o3 u7 l4 x0 _& w, b3 [, g/ y- R$ B
0 n: v" q q: K- <else /> value24 w- `, w. C6 j2 Q# y
' q& m* o" G9 @; h4 t \6 v, h- </if>
复制代码 必须改成:
% U9 p3 J) ]. O& l- <if condition="$id lt 5 "> value14 ? R4 X g' p) H E/ m
1 \7 C9 a8 d4 t* ?0 }- <else /> value2& T2 N* P# i7 ~
- 5 p+ U! G) \' p' ?0 g6 j X
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:# }/ p/ @; u1 _
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP, w3 Q( ^7 A0 |) F7 U# Q5 E
- 3 P' n' @- f! p. t6 g& Q
- <else /> other Framework
* w. Q' B. Q4 @5 o2 h; h2 {
/ \8 X8 M4 z9 y0 [" A/ t- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP- ^: K6 V/ v' ?* @
& N5 X: Z# F, Z- <else /> other Framework
/ }; b: Y( d, `! i2 r7 X5 e k - ! k) U3 L; o& ^; O- p6 z
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
/ F; B5 v8 \. j' U
/ o1 u4 H. Y4 e% U3 t w$ y* ?- <else /> other Framework
: m3 |2 J1 j% K) q2 r
: t' w3 I! H1 v: K0 P6 q. B- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)' |- |3 G( H# f' ^- g" g
/ r. `; m- O2 P* [& _$ d- q- neq 不等于(!=)/ M$ v" w! i2 P5 e' t
3 S. {5 j- t9 R! I1 v N S- gt 大于(>)
+ w) z4 n1 s8 `" u# S# a+ a
* h$ d L/ N/ A; \, [- egt 大于等于(>=)/ D N* Q' D% v
+ M2 ?, B- d! g+ o" K- lt 小于(<)
, a( @4 Q' r" B9 g. \# O - " j' f& M' [/ X" f
- elt 小于等于(<=)) o- f$ o6 C. I( i
% Y& E* t% v$ l3 s3 j- heq 恒等于(===)
9 `+ n6 ]: y# D$ t
0 S+ P6 n) E' ^- nheq 不恒等于(!==)
复制代码
( O+ ?: e8 a- U
3 v: H8 L g; g: }注意
7 m( p+ k7 b- s! _& x: \2 N* Ycondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
4 s: u& X. c2 X提示
( t$ C* M$ w% j* O. @( e在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
$ g0 j1 Y( \3 w- E- R如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。- K0 G1 G; P- Q4 h" ^
' D* p) Q$ [: P5 e3 E. f |