我们可以使用if标签来定义复杂的条件判断,例如:1 K$ z; Y2 a5 l& R1 w, L8 j
- <if condition="($name eq 1) OR ($name gt 100) "> value1
; G7 S- e/ ^% e - ( Y9 `% {4 d; E- V$ @9 P
- <elseif condition="$name eq 2" />value22 [% _( R3 y- B: X6 }+ O, ]
$ ~$ U# G" Z9 W0 U' \6 U4 @- <else /> value3
! u' U, K9 E) b0 Y4 P2 N/ y" D - " X7 c N2 K- K
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:" K0 r0 F) @6 D% E! `7 M- l2 u" I
- <if condition="$id < 5 "> value1/ x% h; n F! w
. @& r( j1 H& X0 J- <else /> value2: ]4 N$ k* B8 w) e# O; V$ H7 p
- . W6 q& _" C* x9 H
- </if>
复制代码 必须改成:
g, F I) @) L7 x5 O/ x9 W1 W% N5 F- <if condition="$id lt 5 "> value1
+ h/ _/ I( o; W/ h5 ^( w. a - ) v# G; R) k: i3 n- @% ?
- <else /> value2
( ^, R1 t7 l$ L# _1 r) Q# u( a
4 P: y6 ~. F0 H$ O3 J: O" ?- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
! ]/ V" `, }& I, O+ o- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
- d$ M- d* F: R% E) f: f
+ N' _, N5 j! ?7 M2 a- <else /> other Framework
6 h5 z% j( y* A8 a$ ]
( i" ~; c* Q2 Y* |) F# V- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
! C& _% `/ Y' u8 v7 N8 E( W+ D - 1 \0 A7 M' @3 ?' J$ V, `8 U
- <else /> other Framework0 M0 X7 O' A3 O
- ! v. O9 h4 W& `. R
- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP5 `9 j! N5 [2 q4 s$ u' c: J! F! o. {
5 g7 S7 y$ _/ T- <else /> other Framework
" v2 o* o" Y$ t5 |! N; ~/ W) q2 M
0 _8 j# L4 Y" Z$ e9 H' {- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)5 [3 y; g1 i8 Y0 l" H$ I+ c' g6 t
- 1 ~$ K0 {# E! N. Y8 g2 T& [
- neq 不等于(!=)* @9 m% M# K# F- K; t
. k6 [6 f& J' M+ j- gt 大于(>)
& D) o2 X6 q7 J& \, F; D/ f9 v - ; X0 E1 R* A# O
- egt 大于等于(>=)
% L2 u/ q4 O2 c a [- I
0 d3 ^$ n. d" d( t& E) R( v; D- lt 小于(<)
5 a$ h8 r9 y9 z6 H0 P9 I - , F! _# g. C( o* c% m) m l9 Y
- elt 小于等于(<=)1 s& u1 o5 e0 C; z
4 `, N6 ]$ E/ S1 B- heq 恒等于(===)- E8 b# [7 n7 z1 q s- w6 S# E5 F* [
; G a& R" ]2 k- nheq 不恒等于(!==)
复制代码" ]) Z) T% j/ u Q
# g% q4 ]* _' r- H; E4 v注意) L% g, Q/ r, E
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
- E. @" e, M; E/ Q. o提示
* I6 i. |3 F) Z! ?* l+ [( W在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。1 V8 B+ D; h5 o- a0 f( [; r
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
2 f+ z% k- R4 s6 ^& J: D2 u4 O
5 s6 e" Q! d$ n, Q. B |