您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9702|回复: 0
打印 上一主题 下一主题

[thinkphp学习资料] ThinkPHP模板中使用判断语句

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:+ p0 K9 z' k; v8 g& w( P
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1. Q# z+ x" ~6 t* r7 z
  2. + b* q: `0 V% S- H' x# n; P
  3. <elseif condition="$name eq 2" />value2" x2 H& c& b& v% q2 p
  4. * @+ d: n% W! t+ \, d. B2 O1 N9 b# q! ~
  5. <else /> value3; z$ J+ V5 i$ Q( v$ m
  6. $ |  r3 j$ P) T: T
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:& u" `" Q6 O8 R4 q
  1. <if condition="$id < 5 "> value13 o7 r8 b& l0 z  a+ Z& E' r3 H

  2. & x  i/ G1 G$ Y; M7 x
  3. <else /> value2
    9 A  W5 j" r* ~, f3 L/ a0 l( q6 j' _

  4. , s8 B' {( @$ F& Y+ f! A: g$ Z! X
  5. </if>
复制代码
必须改成:
) r$ i2 r) O; K7 b+ V" j
  1. <if condition="$id lt 5 "> value12 f( B! K/ q) h; ]# m" \8 ~7 {

  2. . n& t  r1 M( v; U/ V( G
  3. <else /> value2
    / t2 j# [' Y: s$ g, {! V
  4. $ w3 A& d; @+ _( Y9 R3 T) |
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:( w7 k) [* U5 B& S( L- w
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP  G0 h5 p  H) R3 O  {3 N# s! U' K
  2. : i  a: e, S. N: H
  3. <else /> other Framework
    / E1 b" d/ e) S6 V. Q

  4. " G% w3 @. n+ z% b  S8 W6 ^% H
  5. </if>
复制代码

condition属性可以支持点语法和对象语法,例如:

自动判断user变量是数组还是对象

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP) F9 q: k" L) t+ G

  2. 1 k: q5 ^4 h( @+ W
  3. <else /> other Framework
    # ]4 g" S# g3 S! ~% i

  4.   H0 ^& s. g2 q, \: U3 P( H* Q$ O
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    9 D/ {4 w+ u7 s6 I
  2. 2 p% R0 C. P/ r5 I
  3. <else /> other Framework0 ^  Y: M/ T0 Y) K& e% p

  4. $ m; t7 L1 p' I  U( X) O+ X9 r8 L, ]  D
  5. </if>
复制代码

由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。

  1. eq 等于(==)
    # }- H$ p/ T" k% P6 N4 N
  2. 7 W: c7 [  @+ X: S- n
  3. neq 不等于(!=)7 ?2 y" G! B+ Q

  4. % f  f8 S- y7 w6 P4 W; ?3 w' h
  5. gt 大于(>), E; V* {; B" v$ W. @) @
  6. " T2 ^0 q9 y& p2 g
  7. egt 大于等于(>=): @! U2 a& ]2 l* R  |0 ]6 G; i

  8. 9 n: ?; t6 R2 B; H- `! Z
  9. lt 小于(<)
    5 t! X) {5 w7 Y7 m3 [
  10. $ B1 F2 \' d( _1 M) J* K6 w" ^
  11. elt 小于等于(<=)4 b5 C7 F/ T: x; n5 j
  12. + y( v1 C- {! Y" D1 G+ o- P; t% P
  13. heq 恒等于(===)
    ( H( [* h6 M8 V( ?' t; k

  14. * m/ M4 n' J& g- i+ i% }
  15. nheq 不恒等于(!==)
复制代码

8 N: m/ h# [6 D" F$ J' f# C5 t* r


7 r3 M+ j& W$ |$ S$ X$ e3 `0 O注意
9 _' _% V; g6 g% _# ocondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。: S7 D- e" b% d/ X* ~8 X( ^3 D
提示2 w% Q$ u/ K3 ~& o
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
, e: G( S, q: b& q如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。; M, `& o' h% d2 }) B4 Q" ]/ ~7 G# g

% S! ]3 @2 V. T6 Q( q. I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-4-29 18:12 , Processed in 0.146786 second(s), 21 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!