cncml手绘网
标题: ThinkPHP模板中使用判断语句 [打印本页]
作者: admin 时间: 2018-8-2 16:02
标题: ThinkPHP模板中使用判断语句
我们可以使用if标签来定义复杂的条件判断,例如:
v7 S7 ~7 n( `0 x6 u- <if condition="($name eq 1) OR ($name gt 100) "> value1
( Z6 W) E1 a; j4 M6 X3 \ - * r2 Y$ |! x; T
- <elseif condition="$name eq 2" />value2
& W [0 Y, s. Q2 o/ @+ m; B( }5 L - 7 z6 ], j) u/ [! y/ h1 ~+ D
- <else /> value3
9 I, e1 F$ b0 q2 X
# {" q$ y+ J- R" @8 i) J- </if>
复制代码 在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
" @/ B) x; ?( e+ E6 D- <if condition="$id < 5 "> value1
% }% I- l% `! B& |6 T7 B
2 z5 o+ }2 |& D1 z. i1 u- <else /> value2
\& C4 x: [! {% A6 a; h4 ` - 5 b3 t* @6 |- ?$ o5 R0 }, E
- </if>
复制代码 必须改成:
& Y |5 v+ ]3 I, b4 H' E- <if condition="$id lt 5 "> value1
2 r, Q0 E, ?1 x4 D8 _4 ~& q, p8 z - % w- v4 K1 k2 ]4 `
- <else /> value2
: L% U7 N1 @8 h( s& [5 e0 i
0 f* \: A; i& f- y: U( ^0 C9 p- </if>
复制代码 除此之外,我们可以在condition属性里面使用php代码,例如:* D3 j% t5 T" H7 z! m% p
- <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
! J6 c& m4 ?3 S( z8 W8 ~ - ! T. Q6 G& d* D; b7 }
- <else /> other Framework/ B% h0 k8 B3 U9 X: ^ M+ X) {9 h6 l
- ! s7 g+ Q1 {6 H/ V3 `
- </if>
复制代码condition属性可以支持点语法和对象语法,例如:
自动判断user变量是数组还是对象
- <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP D( }3 |+ C- E8 n; k; E! ]- Y$ E
- 1 J# d. J; @; G7 X/ J! f$ C: }
- <else /> other Framework* e; ?& M9 `) a1 ]% V) s2 d! M( `
2 q& e; E7 F; u7 R- x0 a- </if>
复制代码或者知道user变量是对象
- <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
; { C& s b, o; A
* t, O0 g: E' E/ ]# V) Y/ p- <else /> other Framework
. f# ?/ L. }( J' I+ G! k
3 w# t9 o8 m/ y6 F, W: X! e- </if>
复制代码由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。
- eq 等于(==), J4 ~" T m; _( z- _
- / @* B: _5 ]+ c1 b$ L+ q5 j0 ]
- neq 不等于(!=)$ H# C' S- l) }% X+ Z9 N
- % ^' m8 y* Y* A, s5 X% |, Z$ ~
- gt 大于(>)
6 p' q! A9 d7 s7 @2 s1 b: t% {0 ?
3 m t8 y+ e" I; S1 m- egt 大于等于(>=)
, h2 H; m) c6 g9 ] - $ O' u0 u- ^$ ]0 k! _7 I7 J
- lt 小于(<)
; ]# }5 v" u/ v8 f; B - ' M& P- W K! Y; O( F& F
- elt 小于等于(<=)
6 Y2 J* S! E; S0 {3 k1 B) z - 1 |9 F0 \) v6 f3 d j" F( p" w
- heq 恒等于(===)
. Z3 _/ @2 L2 ]# l) R - ) @" v P- k: h7 P3 b' g0 B4 D( V. h! _
- nheq 不恒等于(!==)
复制代码+ L( k4 J# _# ]( [" R
, ^+ R& |2 f/ R2 t' D
注意
$ E4 d4 W7 M& I( l$ n. X8 pcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。( V" P. b- m- u5 S- n
提示1 L. i8 j+ p7 n8 s M6 V# C7 i
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。. Z" j9 @/ o! I7 p6 g9 n
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
4 b( y( U" p1 c& G0 D. M) w4 N! F" G' }
| 欢迎光临 cncml手绘网 (http://www.cncml.com/) |
Powered by Discuz! X3.2 |