我们可以使用if标签来定义复杂的条件判断,例如:+ p0 K9 z' k; v8 g& w( P
- <if condition="($name eq 1) OR ($name gt 100) "> value1. Q# z+ x" ~6 t* r7 z
- + b* q: `0 V% S- H' x# n; P
- <elseif condition="$name eq 2" />value2" x2 H& c& b& v% q2 p
- * @+ d: n% W! t+ \, d. B2 O1 N9 b# q! ~
- <else /> value3; z$ J+ V5 i$ Q( v$ m
- $ | r3 j$ P) T: T
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:& u" `" Q6 O8 R4 q
- <if condition="$id < 5 "> value13 o7 r8 b& l0 z a+ Z& E' r3 H
& x i/ G1 G$ Y; M7 x- <else /> value2
9 A W5 j" r* ~, f3 L/ a0 l( q6 j' _
, s8 B' {( @$ F& Y+ f! A: g$ Z! X- </if>
复制代码 必须改成:
) r$ i2 r) O; K7 b+ V" j- <if condition="$id lt 5 "> value12 f( B! K/ q) h; ]# m" \8 ~7 {
. n& t r1 M( v; U/ V( G- <else /> value2
/ t2 j# [' Y: s$ g, {! V - $ w3 A& d; @+ _( Y9 R3 T) |
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:( w7 k) [* U5 B& S( L- w
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP G0 h5 p H) R3 O {3 N# s! U' K
- : i a: e, S. N: H
- <else /> other Framework
/ E1 b" d/ e) S6 V. Q
" G% w3 @. n+ z% b S8 W6 ^% H- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP) F9 q: k" L) t+ G
1 k: q5 ^4 h( @+ W- <else /> other Framework
# ]4 g" S# g3 S! ~% i
H0 ^& s. g2 q, \: U3 P( H* Q$ O- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
9 D/ {4 w+ u7 s6 I - 2 p% R0 C. P/ r5 I
- <else /> other Framework0 ^ Y: M/ T0 Y) K& e% p
$ m; t7 L1 p' I U( X) O+ X9 r8 L, ] D- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
# }- H$ p/ T" k% P6 N4 N - 7 W: c7 [ @+ X: S- n
- neq 不等于(!=)7 ?2 y" G! B+ Q
% f f8 S- y7 w6 P4 W; ?3 w' h- gt 大于(>), E; V* {; B" v$ W. @) @
- " T2 ^0 q9 y& p2 g
- egt 大于等于(>=): @! U2 a& ]2 l* R |0 ]6 G; i
9 n: ?; t6 R2 B; H- `! Z- lt 小于(<)
5 t! X) {5 w7 Y7 m3 [ - $ B1 F2 \' d( _1 M) J* K6 w" ^
- elt 小于等于(<=)4 b5 C7 F/ T: x; n5 j
- + y( v1 C- {! Y" D1 G+ o- P; t% P
- heq 恒等于(===)
( H( [* h6 M8 V( ?' t; k
* m/ M4 n' J& g- i+ i% }- nheq 不恒等于(!==)
复制代码8 N: m/ h# [6 D" F$ J' f# C5 t* r
7 r3 M+ j& W$ |$ S$ X$ e3 `0 O注意
9 _' _% V; g6 g% _# ocondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。: S7 D- e" b% d/ X* ~8 X( ^3 D
提示2 w% Q$ u/ K3 ~& o
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
, e: G( S, q: b& q如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。; M, `& o' h% d2 }) B4 Q" ]/ ~7 G# g
% S! ]3 @2 V. T6 Q( q. I |