我们可以使用if标签来定义复杂的条件判断,例如:( Q4 I+ H- `2 d: u( F! m
- <if condition="($name eq 1) OR ($name gt 100) "> value1 }3 _5 K! a) c9 T( i- }$ V! j1 N
- 2 c& ]0 T0 b* Q
- <elseif condition="$name eq 2" />value2
$ x+ O, e: A- b( u - - d' g* L2 @: M9 [
- <else /> value3$ H1 ]/ Y' i# \. o2 G8 Q% H3 W6 ~
- * V, Y- |; R! p9 F0 P% [' _7 y
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
" f9 `' m7 T* A1 B5 j/ X- <if condition="$id < 5 "> value1, n( D1 R, c" u1 r6 D
- . ~' R$ N0 w1 `' ` ]
- <else /> value2
( a2 q( W C% i! t) ?# e7 q
/ A# K7 W6 a" l: Z/ o) L2 k- </if>
复制代码 必须改成:
8 h: ?! h2 p% K, e/ h$ ^7 F- <if condition="$id lt 5 "> value1. I* m. `9 a. {# O+ I
- 8 Q- _" u7 E6 S+ S$ g
- <else /> value2; ]0 H, d8 d/ }1 m3 T X; V: V
- ; k& c) K+ t4 p$ G4 _$ k$ a
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:* ~* P! s0 @7 E- M# ?3 P z% @- h; t
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
$ b# R; P' b* J# G- _
2 T, p" J9 ^: }2 _4 W9 \, ~- <else /> other Framework
' ], ^9 A+ T7 ?# h* o" ~ - $ ~$ b5 @) V; Q7 v
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
2 P$ I$ p! p$ q L: w - . y: q' a* N/ }! U5 G! J: Q
- <else /> other Framework! b4 ~! t- \, M3 F/ |/ h0 f: y
- - L1 b( y( o& {/ s- K0 I2 S
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP: d- S8 P" X1 C1 Q% T+ t; Y' o M0 D
- 2 R9 H3 P& I* ]
- <else /> other Framework
! _' }. q- E& l( s' s5 p
& s t7 e. z( I8 r- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
6 ^ O3 {& I* d& s* K9 |, _# f - $ \' M% V$ A+ a) o: V3 s
- neq 不等于(!=)
$ x! y7 X. V0 r
" X! C' w/ |# w. Z6 }' S ^- gt 大于(>)
* [1 `6 H" z& y# e( y9 p1 D - ; P& F+ Q5 I% P. U
- egt 大于等于(>=)
6 {- q# u' w9 c+ `# T - 7 E. l& m9 D% g: q
- lt 小于(<)
& }1 c2 y- Q3 h
( p# |# [. B8 ]9 l1 R% b0 y( N0 r3 Y$ w- elt 小于等于(<=)
: L* y5 t$ z3 n4 t* y
8 C4 b1 A6 w1 Q/ U* p) e* ?- heq 恒等于(===)
4 m2 C( N9 P9 I% | - 3 L# \) y- O7 F( ^& K+ ?
- nheq 不恒等于(!==)
复制代码7 U0 a( i% _& C) S( f$ x* u- l# W
$ C5 @! ]% m7 N9 h# n' E
注意
, R. J) q# q+ G) M1 C. H0 Vcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
$ v$ s( J' I+ i$ n提示4 u p( \4 ?% E" @- l2 V
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。; h; V# v3 R+ C
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。; Q* G: S. G6 N' e, h
" Y* t* Y: ?* O) U$ Y |