我们可以使用if标签来定义复杂的条件判断,例如:6 l$ O" J6 d2 N j' _' ?) {
- <if condition="($name eq 1) OR ($name gt 100) "> value1
, c+ [: i; b- P6 P - N: U0 D$ u B) l# ~) F6 ?, e4 P) o& e( t
- <elseif condition="$name eq 2" />value2+ R( }. |2 s- A, R
6 A! u' O; }4 W% E, I- <else /> value3
& T2 E2 w5 o t, ]0 T; [9 f7 X2 Q& Y - * D/ c0 |$ g4 P7 g1 e" q
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:; K' B. T9 S) g$ k D' Y w
- <if condition="$id < 5 "> value1
. f0 q9 X9 c9 f9 J+ D& b2 w% t
! ?. H" L: V# _% K- <else /> value2) b, N( e& B; x+ s. [
2 e/ m+ q9 c% u( [( E- </if>
复制代码 必须改成:0 ^$ C4 ^8 u% X- m% r! U* E
- <if condition="$id lt 5 "> value1+ F# s: |; p% C y y" H* P
- 6 o; E# r4 a2 B* K
- <else /> value2
8 C. J& ~: B" O" ]# U8 M* v- m7 P1 O
) b' u- n& s% y- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
- Q4 `$ ^6 C/ n2 o% g- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
2 y8 q# K1 ]3 L
2 r1 K/ [+ V0 L- R- <else /> other Framework
9 K q% l: V9 Z4 A - 7 @" I5 S9 }8 m7 L
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP* s4 b2 l; {. V5 i$ q
$ ~) _: b$ X2 s' X' F- <else /> other Framework
/ g0 C! G6 n* i, K - & K% l3 o! A' @ q' ]/ B
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP! l, |( i Z7 o: @7 Z/ E( V- i \
- $ I" i; m& S# Y# O& I4 Q0 C
- <else /> other Framework% v; g& f, t, \, g$ _& j
- i# `$ O, p2 w% G9 I1 v- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)8 @- l* i: e; U q6 g
- / ~8 p4 s) g m t1 C6 M
- neq 不等于(!=)
* y& m. `- j! x- B+ I. p# m
2 i; W! h+ z0 A7 X8 C+ b! ^- gt 大于(>); a% `3 ?, R& g: M
9 o+ e( K/ R- ^5 a2 }5 L- egt 大于等于(>=)0 ?& G; Q6 d: v$ G! H! z; N8 c
$ w4 C. H+ ?5 E/ I4 v) t/ v& `- lt 小于(<)
$ ]8 X5 V$ @, k% t& t! b - 2 s9 h+ O5 a% i: C6 t5 T' q
- elt 小于等于(<=)$ _4 {( F4 N) K( @/ f" s2 [- R: s
- % M* a+ U4 |7 m' X) L$ }
- heq 恒等于(===)* p8 K2 H# w7 Q1 v! d3 b8 m
8 h. m8 ~0 x7 k, |6 K1 V- nheq 不恒等于(!==)
复制代码
h s) M9 d( p2 S3 q$ k5 h, O* y
/ ]1 i% u+ p+ p3 L; H0 c) c注意
8 P+ M( _8 f' V Fcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。: ]3 B/ m Y- l# r2 ^3 M
提示
( Y1 v/ Y$ W0 ?9 A9 l9 G在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。0 _- a, v) Q! f: v) ?5 ?/ F$ M
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。3 c: Z( n: q9 `. Q
6 _3 @& Q# W( Z8 D. P |