我们可以使用if标签来定义复杂的条件判断,例如:
( P! T p8 y8 ]/ G6 o, @" E/ _6 |- <if condition="($name eq 1) OR ($name gt 100) "> value1 p+ k' X' C5 i7 w A' b
( M8 S6 U; v/ v: o. D- <elseif condition="$name eq 2" />value2 n( `4 m' o7 H6 A$ S/ H' J
0 q ^6 a \7 ^7 k! B2 {2 [# I- <else /> value3
; t3 D7 Z v4 P4 J. r' C- a
! P2 m- h. {+ Z& Z; s+ [3 j- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:7 A( l& h2 k: S3 [4 f2 ^
- <if condition="$id < 5 "> value1* }: y9 W* ^5 Z' I5 {, {
- & n/ }! O) Q9 Y$ H/ o$ |7 D
- <else /> value2$ ^1 y) ]/ F* s6 H. X/ [3 ?7 c
- + @/ n6 g0 Q& ?2 n. |5 J$ B
- </if>
复制代码 必须改成:1 @: D$ s v0 h- b4 |
- <if condition="$id lt 5 "> value1: D) J1 C$ p! ]8 b- Z4 ~
Q1 \# O# D# @% S- <else /> value2# U; Y% |. K5 O* X7 g" ]
- $ b8 L7 B' E, W' O# z6 A! f) r5 d
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
4 Z! k7 N; q, I ]- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP; P; q" L! ]1 G8 m# i/ D
! |: X$ H4 N# c; [; m- <else /> other Framework
2 {% c2 ~1 k5 \; R# M! p3 ` - + w2 H1 |; z! Z& w" s" L, `* d
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP6 \+ A: l: ~- P( H& y) E n @
9 z0 D" I2 D2 f O- <else /> other Framework
) T- z! {& B) t$ l8 e
# z2 I0 i5 Y! `. j8 n- B- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
" c) o8 S; C3 I$ k( y9 w" S
6 `8 b" ^6 S* Z, ^6 |/ {; u/ {- <else /> other Framework. v2 I/ O" M0 ~# k
- $ l" C( W) ~- Z1 C/ G
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)5 L* e, ^% l6 D8 h( x" v
- 3 H6 q, W4 o3 A* |6 e) U2 E8 t
- neq 不等于(!=)7 Q3 G- y" g- g5 u7 K7 t
- 8 j. z4 y- S/ G5 ~; F% l- u
- gt 大于(>)
% e4 G5 R4 g6 Q& ^9 W* l - # Z) R, \: U8 g8 R! o; i
- egt 大于等于(>=)7 L0 }: D" D8 m
3 B8 f4 ]3 H0 ?& _3 f9 M- lt 小于(<); X) P0 \- F# j: E" D
/ A0 r8 R/ D- L% r6 a- elt 小于等于(<=)4 d9 E; Z- b# [& ]
; x6 z6 t8 y C; |/ v- heq 恒等于(===)$ D5 B" }$ Z; x2 g: p
- 5 _" R% e+ S4 X* v v
- nheq 不恒等于(!==)
复制代码 t3 ~# g9 c; e- j# c' ^
9 b3 }. Q S# j" }: e5 J注意
3 ?, b4 w4 ^0 _condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。 J5 Y1 o% K+ `4 @/ l/ z
提示6 E* z- I9 |8 H' I: v
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
0 Q- a" h2 E+ L8 B5 b4 e' V& A& N如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
6 t1 m- {# T, B# J8 A: `( T1 n% N$ t5 ?
|