我们可以使用if标签来定义复杂的条件判断,例如:6 K' V: x, Z8 M% O. L& t$ ]8 e
- <if condition="($name eq 1) OR ($name gt 100) "> value14 N% X, \& Q* f: i$ C) M
c) D' q0 n/ u5 m y% x" ~- <elseif condition="$name eq 2" />value25 e2 @2 d6 n0 R5 h, W
/ L. p" w0 S$ f7 ` d/ _4 l+ _- <else /> value3% B& s8 r& l7 t$ W p N- {! H* y3 ~7 X
" G0 t1 ?. B9 B9 l0 R+ a- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
: @, P6 L1 H6 I4 W- <if condition="$id < 5 "> value1
1 V% q t% G$ o6 ]! ~! L - ! e0 l5 J" F1 S2 s
- <else /> value26 |/ x+ R" r1 K& A
- " b; k! ^, c L; _
- </if>
复制代码 必须改成:
& C8 V' d6 Z! M4 x- <if condition="$id lt 5 "> value1* m0 i3 V$ C. M, [2 A7 w$ D* h
( p$ H$ X0 ^! q, c, X- <else /> value2
) | i5 B8 o! v! ~; V6 v0 Z - ; d# w; e3 D( ]7 c, ~' `5 P {1 y
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:% H) Y* H( I* N1 c- \' q/ w4 \
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP- c O# _% g W* f; I/ n
* @3 K) f, `7 j ~7 w1 L& Z4 N- <else /> other Framework
8 O& k' w+ k1 F9 f. R2 D - 7 a7 s4 n. M4 R
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP$ g4 r A+ u' x5 n% h' Z4 Z. C% t
+ o* f2 P; p4 M; C' N( J' _- <else /> other Framework
) n4 L" q7 x9 O' F: B8 C. f6 t
! {) r& B+ _8 _7 h+ o* T0 L$ A7 _. B8 F- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
2 e' J: a( i/ S# e, N) ^! @
/ R' n o @' V5 _, d! D: G7 }- <else /> other Framework, U' w8 _. D9 m8 s
- : k+ J: x+ G T3 B/ I: }
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
- z6 i3 A" K0 }
. {( i$ B( O9 U' U$ N3 U% ?- neq 不等于(!=). H& P& A: b! _1 r
- ) z# H1 ^* T( R A) a/ K
- gt 大于(>)
# X3 e- D5 ?- L9 E7 s1 z - ! c7 P; ?2 l' h
- egt 大于等于(>=)
% y* r, v9 C. @' l6 e4 J - b1 a' y7 B( I, g1 d& A
- lt 小于(<)
( i7 S( n* O1 [0 P - " v% L) R( ]/ Y1 i, Z0 b
- elt 小于等于(<=)
1 t; G! U9 [+ Q7 A - + Q$ W- t. v+ t+ m
- heq 恒等于(===)" P/ a$ `) M, i7 c- ^9 O+ L
- + O2 M) a/ T9 M& U2 A
- nheq 不恒等于(!==)
复制代码; F0 J) T* x6 b, b
: q9 {6 }+ n9 W4 \9 a注意
2 C9 |: X I% v$ R- R( |8 W; Jcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
! j6 ?/ m2 ~; w* M+ z) [& H提示+ X- V" m/ s; v
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
( w/ U4 l; q) m7 ]6 G如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。7 I0 x5 A1 i* L) e6 f; f
2 P# ~/ V H4 r# L+ b6 v0 |, Y |