我们可以使用if标签来定义复杂的条件判断,例如:
' f \3 B4 Q. o% u. Q- <if condition="($name eq 1) OR ($name gt 100) "> value1/ k% G8 x, K. k; f; Q& T
- 4 [! y5 q( R" k# Z" z
- <elseif condition="$name eq 2" />value25 N0 Z+ l9 ] N. n; J$ ~. R4 B
- 6 d& c. E" [3 H: ?$ e$ G
- <else /> value3
: o* H- R7 z; |& i3 V - 6 ^: l% b1 [/ ]. k
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
' t! B, P0 D E# W2 ^' g- <if condition="$id < 5 "> value12 a5 I: u! r* `, }
- 3 l, F$ |8 b- [, }$ P" p
- <else /> value2, g4 B4 K \, p! x
- . b' k9 h+ N) _; m* s ^$ v. M. a3 q: \
- </if>
复制代码 必须改成:6 r! U* R' ] {1 B+ ~0 k. P* e
- <if condition="$id lt 5 "> value1. l8 f0 x3 N6 E
- 9 }) N# L1 q: z$ q, S+ P/ \- D
- <else /> value2
- o" j9 t- C4 R8 E! o `" T$ {) b3 Q
" j2 P d7 b/ F' w! N8 B2 i- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:, O( d& l: w2 U
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
" |/ P% b7 w9 J: z1 w- a0 ]; G
# c/ S. }+ ?# J& y+ [5 m- <else /> other Framework
/ `; Z3 Y9 r% L, O, N& k0 ` - $ {2 M2 [3 c' N9 y7 i
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
" Y0 _' D r/ L
; ]. B" [* V6 N L! R- <else /> other Framework
4 Q1 l) ^. C# Q# y1 Y) ~( E$ l9 ~1 Q m
1 S: j# {- b0 H, h. y( e, `- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP- u- n/ u- U/ ]* e0 k
- ; @% p5 W# a, H' y0 R
- <else /> other Framework; W9 T# G: T# {6 d7 A5 _
- ! `* d ]1 N$ V6 ]$ c; C: c/ p& w
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
3 B% W3 ]/ r+ H' b: e8 t. m
" c! H9 Z8 N& h2 k5 F7 }: V A- neq 不等于(!=)8 A0 M1 c# K2 @; r, s- q1 N
- + \4 A7 l$ u9 j' t: U! Q
- gt 大于(>)1 c. L1 d' [! `" |- S4 u
2 ~+ [7 i9 I) [. v- egt 大于等于(>=)
7 L" m; M }( u2 Y' b
- l4 ]' m O% @- J- A& }6 P; {1 t- lt 小于(<)
2 l4 x( C! K r# Q - & V3 J [+ _5 p0 N! z7 m7 Y
- elt 小于等于(<=)
* d; ~6 c+ L. }# M2 f$ \
1 s4 p7 w0 _4 e# m0 Z- heq 恒等于(===)
1 a; }/ z8 Z( k6 q: |% E' m+ z5 q
8 Z4 W, H. e; }8 u' P- nheq 不恒等于(!==)
复制代码
; P3 E/ l+ T) {0 o8 S C 5 G% E" N- e* Y) C7 U8 A
注意9 `5 l3 { w! v$ B
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。' j5 e* `3 l2 A. B& D
提示' J% ?$ A4 z! G. a
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
9 v6 L5 Q" D) R4 ~/ L& t2 T* Z如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。7 R; Y# }) J& t9 p* s1 H8 p
( c+ I7 j" s. ^3 v7 _( o
|