我们可以使用if标签来定义复杂的条件判断,例如:
$ D, f4 r, X- W' `- <if condition="($name eq 1) OR ($name gt 100) "> value1
0 e, p3 B0 x$ U% z& j% C
- m! z, e# V( s6 m; S6 C" g- <elseif condition="$name eq 2" />value2
. z! u; W$ U& {3 W; j8 F - + N! Y* x8 n) `7 X
- <else /> value3; [) H4 N# a. S7 s. h5 {: A
2 S+ `* o/ m- {2 Q7 F7 N! d8 ?& a- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:9 `9 ~' O% U- f; w! i1 G# f
- <if condition="$id < 5 "> value1
9 j0 h4 D/ Q Y* X! A% Z& _ - ( G) O% q" J5 |7 `! B4 K u
- <else /> value2
2 @0 W) E1 O+ W# W/ ]5 Q - ( ^1 \0 g4 [) C( G
- </if>
复制代码 必须改成:
/ C- |' z4 D8 ~& J- <if condition="$id lt 5 "> value1
1 `* z, f9 z$ i# k4 B% Q D D c3 l - # ]: ^) |; l# ^( J: b# X
- <else /> value2 G9 r$ P2 _% H5 I7 Q# i3 c
1 }9 I1 J/ h; x7 y8 X$ S- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:: \- N# i A. a+ e. I+ b
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP$ T$ ^5 [2 F; y% A1 v
- 9 @/ F9 D3 M; V/ |0 q; j5 ?( g+ H
- <else /> other Framework( h9 K7 r. E3 h% r; h
4 e- A) u* z7 h8 J- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP) y/ X" q7 Y! {# w# N* I
- ; [/ v5 R& S" u; u4 E+ I# q R6 O0 v
- <else /> other Framework
D; ^- _% K1 h% o1 m3 s+ Y5 y
4 I- D: b+ h/ y8 j# Z, p* Z$ w- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP" V3 F; p9 w: B% w
6 h/ v- M. [$ J' J4 d8 c& {- <else /> other Framework
) L$ d6 c; U2 Q& ~8 Q
: |; {+ o& A4 v' H- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==). N- \" k8 x7 r6 R6 F: G" Q
- ; d! J% g3 ]& F) u
- neq 不等于(!=)* V1 [( t+ G* J
+ o/ B+ z8 I6 F( Z' n. J1 q) j4 s7 T- gt 大于(>)
1 s. i. t8 S3 D9 S( K1 j8 W
: t! x# c& r# `2 O3 ^; D- egt 大于等于(>=)
; F8 r; C3 E' t: B' I - 0 e5 G( t/ l+ k" V
- lt 小于(<)
7 B5 [' {0 ?9 Y/ v2 k
, w* \! h# X, J: m) H2 }1 N: r- elt 小于等于(<=)
# }! N- O4 F( m3 I - 7 r p+ w7 d# x* f: j/ S
- heq 恒等于(===)" W. i* g& Z0 n) b0 a; K
- ( _$ N' b& J7 ~0 w# V& c3 V5 {
- nheq 不恒等于(!==)
复制代码
$ H3 A4 u5 r$ Z8 n! q * }$ a" i4 m# t! a. T9 @- V
注意1 k7 M1 G0 ]& Z$ o9 d+ f
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
" u/ D2 c) B( U提示0 Z) G8 R2 D! J0 P3 K! d7 B! U9 F( `
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。1 ?6 e1 M- M z8 H' ^
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
- Q( `/ |# e( [, @& _. E+ Y" _
# |# X( _8 T+ u; w |