我们可以使用if标签来定义复杂的条件判断,例如:) h) \1 Y) m$ x* v" M G0 O
- <if condition="($name eq 1) OR ($name gt 100) "> value1
+ p0 y& g" d8 l( H- L0 Y - / V+ y+ N5 `! U$ x) ?" S; w5 `0 J
- <elseif condition="$name eq 2" />value25 C4 T6 S! b& l
' i( o( ]$ j* u- m- <else /> value3
- m" h. ^: B0 I5 z3 B& I3 P - : H8 @; B9 ~3 S! z* A9 i- y
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:8 ~9 d: b( \; t
- <if condition="$id < 5 "> value1
# y8 N) e+ s ^9 H- W - 1 f; E! T7 ]. L! t
- <else /> value2) D8 v- d% ~* m
- 8 I0 h6 k8 i$ A
- </if>
复制代码 必须改成:/ q. \5 x- a. J1 p! s3 q+ i
- <if condition="$id lt 5 "> value1' G! F& R& r6 @& B2 c6 W
- $ W: m( J4 P0 x
- <else /> value2
5 u, ?6 r( M; w7 w) V - & }8 J; i1 T) v7 B( ~+ ]0 V5 V! M! X6 e
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:" C; L8 I; u, f8 E$ e7 o" {
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
2 C8 i, M& l- X) j2 q C
; b; D5 a) j" F1 K- <else /> other Framework
6 R- f V( y9 Z - * ^( j; t: S$ t( d- D* j
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
0 ^' ~% V* A0 | - & E( u5 Z U# E9 I: a
- <else /> other Framework
4 W! T' q1 V) _* p4 ]
; c) ?, c, a4 v1 }- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP5 Q8 h7 n5 t$ h3 S9 X" u, F& `
- 5 O2 T7 l+ s% n( |$ y- [; }
- <else /> other Framework1 n9 m2 G7 h6 I+ J1 p( i s5 _3 ~
- * U K( ]2 Y0 ~; }
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
- Z; w5 n* [5 p- d7 j8 t+ | - # k/ G' Z r u& X3 w
- neq 不等于(!=)1 K5 \8 }5 k# \5 d
2 C5 L. i& c4 n/ d& S- gt 大于(>)+ x& Y8 X% H, i; D
- ^1 T% a) d1 I7 k- egt 大于等于(>=)
: i! N2 C+ `8 r0 r ?2 v - 2 g6 R" i/ p) I) B5 Q' Y: S) b
- lt 小于(<)
- [ J5 j6 [7 X, ^, J - ) l" q; m/ P) A3 N! k
- elt 小于等于(<=)* O' f3 V9 ]: h' a- @6 o0 \' M
# p- E% q X7 t( R- heq 恒等于(===)8 P X3 i+ K& u. E
, k2 o+ x; x. J1 V- nheq 不恒等于(!==)
复制代码
8 V3 J0 |# k& ~ 8 k' h$ K: \; @
注意 K9 G& d* s' L1 Z* N5 y& [
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
3 Q" C* C: W8 Q j0 ^提示3 ^! b* G" A' U7 C! J; h( b1 T! N
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。" P4 K; ?6 |+ ^; o
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。$ a7 x2 `+ v8 J4 I
* A- _, h# H B( v# o* @" m( R) G |