我们可以使用if标签来定义复杂的条件判断,例如:) c8 Q% R# V& q+ Q
- <if condition="($name eq 1) OR ($name gt 100) "> value1
. P! i# m- d; G: u3 i% x$ Z5 ~0 N
s% C3 }3 k y" k7 }' `- <elseif condition="$name eq 2" />value2) a/ i% M3 @) W1 h# d# F
- + H. N+ H, s# o D
- <else /> value3
0 v4 @% R% I: j4 s7 c
9 W0 m9 f9 x: Q1 D- }- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
# z: k, E/ K# T y% K* z& x- V- <if condition="$id < 5 "> value1
* M4 R' s. L: {' E" v* d
/ H- e$ k+ P# m- <else /> value28 `0 }& `, V+ l- n% f/ V
- 6 }4 l2 @$ c2 ]9 P6 r
- </if>
复制代码 必须改成:& B: P- A$ ]9 s
- <if condition="$id lt 5 "> value1. }) k! p+ B# @5 V; g
- 6 Z4 u9 ^& U* U# b2 y2 Y
- <else /> value2
1 e/ w* Y) S/ e* B6 N
' @! \- k; Z4 k# N7 a- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:6 Y7 N4 B- ?. Z# v8 A1 X: Q- i
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
' L3 l m' h! y9 Z- \ - ; ~4 e5 ]1 P% [" c" }' B0 G
- <else /> other Framework ^2 Q# o! Q, m5 k8 ]2 T
- + u. o; P2 y2 V' n/ g3 T- q' j
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
9 J0 k- X0 W( \; w' Z0 A - ! _ M5 y6 j i1 ]7 e" S) q
- <else /> other Framework4 x9 u) i3 ]( U
2 P; l4 U& f' F, X0 W* R2 |- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP& X8 G9 ]* A/ u4 u$ P* k9 J- n. u
' F. R# h0 X: w' ~2 R& m B+ G8 L6 j- <else /> other Framework
/ z, d: Y; T3 w* l' P2 Y4 { - $ G9 N$ w% \ Z3 m8 }
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
3 g |; I5 Z, X/ n+ G8 T4 N - : {4 |! w' K1 b4 h, I/ y' P4 S6 Y
- neq 不等于(!=)
, }- w* g& o1 j( x3 p# L6 X1 w
8 S) {8 N" S4 p t: e. A* I- gt 大于(>)2 d$ G* X1 V4 V" ? k
7 k _( W9 V+ w `0 F) \& L- egt 大于等于(>=)" t# }8 O, D; q1 k r# Q
- g; g8 n l: z* k
- lt 小于(<)7 P$ S7 c% Y, }# u' z2 |$ a+ L: @
, `* s; e K' |3 I! F% Z- elt 小于等于(<=)7 A2 P1 B" N% }) r' M* x
- % f. v6 g# o) s# ?5 Y0 t: }" d
- heq 恒等于(===)/ F1 |) o) ~8 @+ g& |
3 l7 U. N5 U2 y+ m- nheq 不恒等于(!==)
复制代码
5 ^. g3 f& d3 L6 c0 x6 j3 v
% g* H% m$ p& g, a注意
! m) T7 ^ Q& ^( G& `( e2 b' s) jcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
8 K( X( J* Q; S$ l9 j提示4 o3 {: l M) t
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
% y, f$ n# m4 K* n+ n" E' p如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
6 g3 p% T1 H* e# E0 B5 E, @1 p" Q2 v" o4 z5 p" z
|