我们可以使用if标签来定义复杂的条件判断,例如:
, ~2 l' b3 j! t- <if condition="($name eq 1) OR ($name gt 100) "> value1
! s9 N* h% l6 z) q
1 L }4 m$ Q+ s/ z! V- <elseif condition="$name eq 2" />value2" T. z. v# O" t/ O. e6 I4 h
* I8 c! B, W$ D- <else /> value3
3 T4 W3 N0 X9 {$ h' x - ; h7 N# Y; G/ Q2 q0 ]4 x
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:2 i! S( L/ t$ h7 h
- <if condition="$id < 5 "> value1
# u0 H( p% [# O2 ?- c - 9 k" V: L/ S/ w
- <else /> value27 `7 m t, t) t
- ' J2 s* A9 ~: h3 i; p; `: m
- </if>
复制代码 必须改成:5 a; v: c. [- S! q7 m
- <if condition="$id lt 5 "> value1" Z. W5 `( \* u% p; {% h! \
6 I: S* i ?1 Z1 ^, }4 t- <else /> value22 M" w3 M+ K5 J1 T/ e. H. t) T9 B
- 1 z( c' I; W8 m9 S
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:" S# H0 l+ K; \" |% W
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP& y8 g9 \- k$ w/ P9 H0 S
- $ B. m- a: e( N
- <else /> other Framework
" t5 e1 X0 @$ q. ^& b
4 s1 \7 S5 O; v) Y- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
- _' D s- \) Q1 g' f7 D
+ ]. \& ^+ @' [- S- <else /> other Framework
" P( ]3 [# [; Z0 H' B- C3 V - ! O: _$ s; Q3 H3 P! E
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP& n& t5 ~6 N1 O7 q
- 8 v! _* j# C$ O4 e: @: h+ v3 q
- <else /> other Framework* y# `$ s, L& _6 K6 J( t( Y
- " v) I. L( V4 M3 I
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)' r! `# k" ?# y0 q2 Y& _8 M7 ?
6 q/ x" J# e# @' {9 O% _- neq 不等于(!=)
: G7 Q [2 Z9 j1 d
2 f0 h6 v; L- U8 W1 p% ?- gt 大于(>)0 a4 m2 d' A7 Z& S" K
: Z1 z0 j; O7 _6 Q' \' O- egt 大于等于(>=)
: G' Z, V0 o7 K# f - * Y+ }" D+ N' w$ v7 q/ V! }
- lt 小于(<)- k4 o! F' J" C; J8 K1 y
- : |) y# [7 s. ^, r# }
- elt 小于等于(<=)
8 K% } K6 G1 H2 I" p3 l
. ?1 R- U+ V5 L" z, g! M- heq 恒等于(===)
2 ]4 p: G4 |0 p& D& t& E7 T) P) B - - `) s/ F" q( s4 h2 W( L2 \) L
- nheq 不恒等于(!==)
复制代码
$ l- f7 j) H/ Y6 _! r % O/ \4 _' U T/ \; C) I
注意5 v+ S/ q: b( `3 ?! Y9 G
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
1 s, E7 ]. K# g" N提示5 V. U& V- d7 ~, |6 G
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
( D: W( W# ~/ E: ~7 I: N0 q8 A如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
& q) R& z9 U5 r. G$ ] W/ w) V1 ]6 t) P+ ?" }4 X& |# z
|