我们可以使用if标签来定义复杂的条件判断,例如:) ` r4 W# W7 O
- <if condition="($name eq 1) OR ($name gt 100) "> value1& p& A2 Z9 N# | T
8 H8 `8 |0 U% q( R7 s& j- <elseif condition="$name eq 2" />value2
* v; s5 z# X6 i. j# x2 J# ]. D* O
: A$ b! h0 A+ J9 H4 u- <else /> value39 t3 W- v8 [3 E. Z: i
- - k* z- J6 E5 Y8 Z! T& S6 @
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
1 f( V6 N- H% D- <if condition="$id < 5 "> value1
4 ?2 u: U, `, |, L' X$ k; z# a; m0 O
& ^2 N. A$ j2 x9 m- <else /> value2) k0 ~ S) B! G2 _/ S" O* L0 R6 D
, }- ]' k1 ]( t- </if>
复制代码 必须改成:- j0 \6 P0 T/ M1 L# J6 E
- <if condition="$id lt 5 "> value12 G# D/ g- L* o
- : A0 W' @! [9 [- d9 Q# A
- <else /> value2
7 C8 {7 v4 M$ u7 p I2 D) ~& c9 U. a) h - i8 I6 y# G1 }4 B0 I2 ?
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
^1 K1 e6 x1 @. u5 I8 B- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
" i/ D8 y1 m% A$ c( n, e - ! x, N" n9 t* y1 L# p- x8 H* \. y6 e
- <else /> other Framework3 F( m; H3 x1 W/ h
- 7 Z2 o C# J x/ Z! R4 v
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP- |+ R9 {2 k! k* n
- # F, \1 S5 M @
- <else /> other Framework
" v- Z$ |: y$ q$ j( w! w5 n* C2 y
0 U1 |! O1 d d# y- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP9 |) W0 g, \# U$ n5 e% e: {" ^
- 9 K+ b1 J( E0 j1 P
- <else /> other Framework
d$ }* ]" u" ~! ^( |( m - - |6 m) J$ b& A" c
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
7 |, v9 I. ^; _. _ - 1 q) u8 l4 S4 R3 J0 Y6 `
- neq 不等于(!=)
3 M; A- z: Q" f8 `( J1 e
9 B! ~* p! l9 M2 C; R. I1 @- gt 大于(>)9 ~% H3 h- W$ w8 I
/ Q, K* z8 s v4 F9 N7 S- egt 大于等于(>=)
@' L4 Y, j# _( B - & u% P7 o/ j: ^; C) m' Q/ p) `
- lt 小于(<)1 D# l# |$ Y, Y7 C8 g" K
- 2 G6 d1 H2 N1 e8 v( B. x: w m1 N
- elt 小于等于(<=)
) ]4 c; }3 [& x* p: H1 O U, ?4 o; s
7 d9 _, @7 e2 I" Y- heq 恒等于(===) C, x9 U& i( k6 b, M$ z
- ' L/ z/ p! A8 g* `* Y6 }0 l! ~ x
- nheq 不恒等于(!==)
复制代码
# L% m+ Q" |8 j) T8 Q- S6 u/ H. Y
, }; r7 a+ ^: T: l& p9 \注意' ]# h( i& ~6 E( N# q' ~9 i
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
0 y3 H; W# g- k" _9 X" F提示
" k ^: Y" q2 w5 I. q4 M6 s! M$ G1 \, g在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。4 R, m! i5 V8 g6 _6 b0 Q
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。% n* w2 A% a; k+ {* u
0 g2 D# \# r& V4 P; d |