我们可以使用if标签来定义复杂的条件判断,例如:
; U7 ~# K+ l0 q: Z+ K+ y# W6 K4 e- <if condition="($name eq 1) OR ($name gt 100) "> value1
4 w( T1 ?$ z- Q) {4 b
/ q2 f ?. \# X6 D" I6 R o- <elseif condition="$name eq 2" />value2
, i; g# {* L4 [" H' e
" v% s" l6 S4 C/ k# i+ m- <else /> value3
( `. Q- S* I7 R$ n, [( i
( N1 \7 y3 d- n v) g- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
+ Z& X# x% V n/ C- <if condition="$id < 5 "> value1% N4 {8 Z6 |/ c) @
- . ]0 X5 T. D& K8 a% B
- <else /> value2
( @+ D# Y @8 x: [/ A' {
8 I) _4 p* c1 g# ~1 Y- </if>
复制代码 必须改成:: o" P2 M+ i: d$ ?9 S' e R
- <if condition="$id lt 5 "> value1
8 y* M+ p: c. h% p - 9 D- w: X. o" X2 I
- <else /> value2' c5 |, Y: h7 _; Z) n
q& b, H. a- S+ ~- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:
" E4 t; f% ?% U7 v) K& T3 v, I- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP5 |$ W/ d# h, |6 X5 ~+ _9 O6 X
8 j1 H! v7 ?. s9 m- <else /> other Framework) R: f3 ] n4 O6 M8 e) v; S* @7 P
! Q8 ?4 k w2 ?# ]! K- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
/ Z5 H3 m- B, q* C
$ Q3 H+ K1 c: \) L" N5 q- X' V+ E7 s- U- <else /> other Framework0 }5 H* U; k% ], T/ i! d
, I( o5 k! x- j; p' s1 O; t" g- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
m& _# J: _# q+ ?* q
; A- y6 g9 d! e' _" O- <else /> other Framework1 U9 \5 b; j3 F) h$ M' V; H
- 0 [% u5 k, x) i+ m5 l- k
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
( T: Z- i# y$ E0 R4 D {
: G% g- `5 M% ]2 s- neq 不等于(!=)' N! K( e' E/ ]0 n
- b. p/ s1 J" _0 t+ q, `% G- gt 大于(>)
1 W2 w5 H+ c; z) r
1 e6 D7 j4 w/ b. g- egt 大于等于(>=)' L1 K' {% I# A o! V v& V( q4 h5 G
- ; S( Z# d- N$ d2 J- y( w7 m) G
- lt 小于(<)) O8 f% b2 v2 i. f. X" x
- * }. j8 |+ x8 g4 `% V) d6 ~
- elt 小于等于(<=)
9 _! M1 p1 Q% r1 l$ y - % H; M& f7 `4 S9 Z' Z: x% D
- heq 恒等于(===)
8 f, m3 q! v) x1 D3 s7 c. h4 p
3 Y' S: F* i& a- nheq 不恒等于(!==)
复制代码7 N: w* i# S/ }- T2 U( a( \7 k6 R
5 @1 \) U6 E- j7 A2 X6 L( S
注意
: e: h" y+ Y$ I* L, \condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
! I4 L+ _. j" l! Q( |( u; |提示/ |/ Q$ j6 I$ Z4 P, u! v
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
" w2 \1 i9 C# U" v- L' n( Q如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。- E* h( {" M) ^0 m/ z) u. G
: j0 U+ z7 H# U- m) |- S7 b. ] |