我们可以使用if标签来定义复杂的条件判断,例如:
1 p8 H" I9 v! ~) w4 `- <if condition="($name eq 1) OR ($name gt 100) "> value1
7 Q: ^4 C' ~' I# z - 8 p' _7 r3 @# C# I! P, S. o }
- <elseif condition="$name eq 2" />value2. ]# N* }7 N }. c X: I2 W
& O D: Z m4 p7 ~3 e0 ]. e- <else /> value36 V; ~: Q z$ H5 T, W- n
- 2 m5 r$ j8 n% D
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
' s! ^5 R" I- m& _' Z J* S( i- <if condition="$id < 5 "> value1
5 N- |; `# P& I4 }8 {5 T' H
+ d- I" Z9 U( _: c1 [/ X- <else /> value2+ r# \5 H- M& k. ?
/ } T M7 ]8 p- </if>
复制代码 必须改成:' d) X# e- _/ t* \
- <if condition="$id lt 5 "> value1
! t9 {- H) T! `: R. [+ M7 z - + j+ o) P' k8 D b9 q
- <else /> value2
/ l2 \/ F Z6 w7 y J* k - + V! y2 s. h$ Q' P% g
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:5 D9 H, \; V: L6 `* u1 \% y7 O
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
8 W' \. s( E9 H7 g7 [
" l+ T) f& k: D A* x4 ]* a- <else /> other Framework9 S) Z- z; o& s2 g1 ^& W
* ]: |/ b6 S: m8 k" \- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP) |/ \) ?+ V$ q% N% f
8 }* n K3 ~+ e C. B- <else /> other Framework
. z! f- H7 |/ N/ D' x
6 V [3 `0 I# h1 _0 i- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP- G0 x! E0 o7 k# `$ o- z
- 6 |& A6 P4 r' n# W
- <else /> other Framework0 C3 M$ j; {, J4 P$ S
- ! t1 i% b. _; v T
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
7 T6 g) h0 B; R
* q s' m, k' U/ x2 ?0 P- neq 不等于(!=)
4 S$ L& Z0 H1 \ - % d% v3 ~$ C# r2 L/ `! j
- gt 大于(>)9 M; v- f6 L8 H+ h
- - i4 C* s& N1 ~
- egt 大于等于(>=)
( T( B$ `" N3 g7 d
5 A: c) F7 b4 r8 O# t- lt 小于(<)) E- X2 t* E* Q
5 ?. F0 B+ }6 P; U+ @- elt 小于等于(<=)
5 `8 m; u; a, g1 m - 8 F: P5 f* o; A( Z5 l; L7 d }( g. I
- heq 恒等于(===) S! `( j% ^7 }4 k# h
- ; W$ I8 b% ?( H, D/ g! W7 J' c
- nheq 不恒等于(!==)
复制代码
: |: r: e r# I- g/ }7 d" x+ T 2 z$ c; H1 r$ y1 i: k0 D
注意, G7 \( }; `$ w( ?1 S3 d" J( K
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。+ M* S% G, v6 |# J; q8 X
提示
/ E6 J* ~. V( d* U& k3 a. {2 H7 k在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。2 k' e0 H; U- `4 _2 Y: Q. H
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
; W) s; T0 g. \. a9 P( ]3 e, ^
0 q: |) D/ k$ _2 ?: _9 p |