我们可以使用if标签来定义复杂的条件判断,例如:
( Q3 C6 k& w& U$ F5 [- <if condition="($name eq 1) OR ($name gt 100) "> value1, |4 G3 R, `# `- @
4 t/ N3 A3 l( V1 n" `- <elseif condition="$name eq 2" />value2
& W% {" a) Y1 V6 I* i+ X# ~. X
5 i/ v! T" ^3 b! X2 ~( A- <else /> value3
- `. q) [$ [5 J, o: H - 6 ~6 E& r8 ]7 r' _$ [0 I
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:! B! E, }' R1 @: Q' {; `
- <if condition="$id < 5 "> value1
, @- v5 b) h j2 ? p/ ?) L - - c0 E( r1 r. I0 ?' R- f* Q0 {
- <else /> value2
: M; f# c7 B' Y" I3 e; @3 A. |* c - / W: W! z+ Y5 M- S+ u
- </if>
复制代码 必须改成:5 d. q. f" g3 p; E0 V
- <if condition="$id lt 5 "> value1
2 `6 W0 N5 ?. G3 ?! t - 3 J4 N: _; N9 I1 ~) a9 S
- <else /> value2/ z1 A V* ]- q# p
- ' v* M& a v* P. J Z! T
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:5 f7 N H; t6 i% i7 A* p. d7 {
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP! U4 B$ c! v, c0 u$ L6 L! G
0 s) |0 L6 r r+ e- <else /> other Framework. O! F4 x" X# D, k
+ F! b6 b6 S8 {" ]- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP: ^ i3 T9 q# P- a( J3 r
, q3 Z% t2 c' d3 U$ Z- <else /> other Framework) G. t# t" E: r5 i- N( I4 I8 l# Z
# `( L8 P6 z% M, h- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
8 Y2 t- P. {: F4 y8 ?" I0 [ c$ |1 j
( Z4 }5 ~$ `4 ~8 N, c- <else /> other Framework! P) \, S! @+ e" i0 u5 V; r& P
6 C8 N4 t, z- N/ X' z- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
# z4 h/ G; S, ]8 T
7 w3 X+ m5 B) d. A; t- neq 不等于(!=) ]' V7 @, z( r3 D5 C/ j
8 x1 o4 Y7 \1 X b+ h4 _- gt 大于(>)& t4 P( _8 G# E1 `# |' t! [
- / w2 x1 X1 V/ ?/ P
- egt 大于等于(>=)
7 k2 R# i/ a7 J
. V' `3 ^8 y: H- y/ N( _6 D; K0 S- lt 小于(<)
" I: b6 m% y; E% @; B3 g
5 y6 ? O* H- ^0 i- elt 小于等于(<=)
. g( T c' D& O, i; e4 J/ E$ L - * [$ q0 P" }/ U. i0 U
- heq 恒等于(===)/ B5 T# C0 E! x* D2 o! b6 W
- Z. g* [2 Q" X8 d% Y# T, W- nheq 不恒等于(!==)
复制代码
4 U( A/ Q' ]5 s$ H
8 L* g1 Y/ o! S4 p. E注意7 t& H3 ?) L2 a' T) C
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。1 H* k9 A2 d2 p) A% H. W$ Z
提示
+ K% V8 g. f; n( e5 G在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
7 o% J h, f) R* B& m如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。# k; [# m z' k) q3 i- U
7 }4 o0 D6 J' C, p$ I |