我们可以使用if标签来定义复杂的条件判断,例如:
$ O, K3 W% I! P3 r1 p7 ?) l3 m- <if condition="($name eq 1) OR ($name gt 100) "> value19 k V0 y0 U% \9 e
- ' c! f/ D, @8 B( X A; n x' W
- <elseif condition="$name eq 2" />value2
9 ^, b$ z$ t( b - 4 }& O( d/ F6 e. j# E
- <else /> value31 f( n# t/ T1 _9 ~
. w2 U+ M# g+ \/ U0 S% a5 v; B! V' |- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:# N3 n5 ]& l* N. A
- <if condition="$id < 5 "> value1- C- s8 F3 t, y" v+ {, x
, n/ u9 k$ z0 U! v; e8 n4 h- <else /> value2* M) r" P5 S" Z+ n ]
[) c! _# ^& {8 o5 ?% _- </if>
复制代码 必须改成:
6 l a! C4 Z. C5 G, [. j- <if condition="$id lt 5 "> value13 Q8 ?7 q2 A; p( A, J) C- c
- ; r8 `$ g8 s4 c2 j# {$ {4 { J( ]
- <else /> value2! l3 ` s2 g( x" N* l6 X
% {1 N5 d' c0 k$ b4 K' }- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:; o4 A+ N' _ ?* ^ ^3 a
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP2 [; T. x7 P" s" U( o9 ?
- 9 A, l4 R- _* M. W8 _2 A7 I
- <else /> other Framework) P6 E* x h. S! {- v
, ^; f3 \% I( l/ T3 C) ?; e- </if>
复制代码condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象 - <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
8 j; R0 S/ ~7 V9 _ - - b! {& k- @) [% W6 M8 A
- <else /> other Framework
8 X+ k9 F: R) u/ P& P
* ~& d/ G0 g: r/ d$ a- </if>
复制代码或者知道user变量是对象 - <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP# G( _7 [, X& J8 W5 U
- # y" A" {. ?3 A! E
- <else /> other Framework
) h, D6 |9 f3 ?' K/ J3 q - & d8 F P6 U( F, I6 p
- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。 - eq 等于(==)4 X9 _0 P5 d2 v5 T$ W' l, t0 F6 M
: u; q L8 N7 H: { `- neq 不等于(!=)
& ^0 E/ g, s4 T D - ; H* t) i4 c9 T
- gt 大于(>)
1 U* K/ \! A* e3 H: X6 @+ |9 [5 d
, j4 }1 M! q; E3 _' b4 o- egt 大于等于(>=)
2 X0 V5 L# |* Z( S! Z3 G - ! M" F/ |. G( o4 g, f2 F$ R3 M- H
- lt 小于(<)' _2 N9 m7 h$ T3 o
$ x2 d. P% H, M" W0 X$ w- elt 小于等于(<=)/ i M8 z* J. a1 F5 U- Y
E5 ~# m' F. u- i- heq 恒等于(===)6 k7 n% y5 A; m1 j# s H
- 5 Z. d+ M$ X% s3 {3 Z
- nheq 不恒等于(!==)
复制代码
5 ]4 { a" B7 e: X2 ^* a
. N5 P8 H7 w( d3 F) e7 Z; T注意$ B$ ?3 d% [, z
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
6 w5 t1 x8 B& f, F提示6 ]3 U* @. T- x' E) @% }
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。& M4 Q- g3 _6 k: v- N
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。' f/ I, V1 D$ C2 v
3 T0 u3 k8 L; p/ e8 T0 T
|