我们可以使用if标签来定义复杂的条件判断,例如:
. \7 I$ [+ ~" D; P1 u" d2 q. c- y- <if condition="($name eq 1) OR ($name gt 100) "> value1
3 W* ~2 l& |6 ]4 ^- l) A$ \
" j6 Z7 X2 w' ]! O; I- <elseif condition="$name eq 2" />value2
' L6 P3 f; J6 U' M0 z - * o, d. U' ?; N4 ?( L5 O- V
- <else /> value3
- i4 M5 B4 r, V6 ^ - ) N$ G: |8 I- g/ x! T4 i* r5 P! H
- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
0 {% g) O& q4 X% A- <if condition="$id < 5 "> value1
! c- J$ M; S3 K4 h( R) b" \ - v5 j; G: L# \; W
- <else /> value2
: E: y+ W4 T6 F% W* f" { - # K7 r, k, N9 S9 \4 U' w8 e0 a
- </if>
复制代码 必须改成:% G% X: z w! I% ?
- <if condition="$id lt 5 "> value15 S1 t% W0 j2 ^3 o
/ P" a; x) r0 Z# a) d7 U- <else /> value24 }6 m! O$ H( P/ K
- * w6 {0 u# l5 z5 {
- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:3 R& i: \: v7 ]9 X. h6 G8 y2 \( D' z
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP) o! @. m, j6 w: o" j
- 2 H) w6 }3 U% \1 m
- <else /> other Framework* X. W$ F; L8 f- @0 n( F
- & |) \5 H2 t- U7 w
- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP- f3 ~. ]4 N1 _$ }- c, f4 K
- ' `2 {* h x: r$ k% E& T4 z# x
- <else /> other Framework% c# `9 G; S) x9 f
* _/ A0 K9 w x% i- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
$ g' Q# J i: O: ]3 E7 A( T8 t: ?, f7 {( s i - / u" n' q5 V- V$ w5 V
- <else /> other Framework
y$ K( G5 n( B/ y* ]5 z - : `' \% V6 ?) T
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)
5 A4 {: z2 `2 Y4 c @8 {" n5 N
5 P P1 z7 t: y7 t* y, [- neq 不等于(!=)
% } v. b* P! ^" k1 b+ J - ! _8 H+ N2 z I+ A! F- ]
- gt 大于(>)
( ?3 f* N; [8 ~% U! l9 e) C+ q - 1 ~. p& G# L4 d% i k
- egt 大于等于(>=)
& o& l, x: ^7 p1 s' M: u
8 {/ y1 ]( P5 B) _' W- lt 小于(<)
1 [3 u0 R$ o7 A) K - 5 A; M: }* a4 g Q3 z
- elt 小于等于(<=)
0 u- H4 g; P: \* {) N5 E
N; {7 }. w# M0 [, v6 Z1 ^- heq 恒等于(===)8 I9 k: p3 U% b' L
- " s* _6 x, ^0 q4 x- E' J
- nheq 不恒等于(!==)
复制代码
" v: \4 U/ c5 e6 _2 G+ d
. a1 p/ O3 `; b3 V. v' y/ O注意
" N5 G1 I: c$ l' q( s% x$ hcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。, ?/ N! g+ y6 j$ y" l
提示$ N4 B# e! c7 \0 F. g2 C/ I
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
( ]+ H% [# P3 o如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
* ~- w! U4 M8 A$ A1 x# }: o" ~& }9 e+ ^+ u6 {
|