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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
- n& {. v; [1 p0 x
  1. <if condition="($name eq 1) OR ($name gt 100) "> value16 |- X& M% t( U  n; ~) u

  2. % e& \/ u  j+ `5 y. j
  3. <elseif condition="$name eq 2" />value2
    - i8 L0 l6 i7 J3 k9 y! d9 c
  4. 3 ~& ~( P0 V  S- q) q9 Z% M
  5. <else /> value3+ j; I6 T7 I, S. D: T# Z6 t% q9 v

  6. 0 F) k& l+ y+ Y7 L
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:* H! }% |" u1 i( _9 p  v% ~- f8 n
  1. <if condition="$id < 5 "> value1. ?0 _% `( I# H( f; A! j$ I

  2. : L# x: w# }8 \/ F9 `
  3. <else /> value2
    " s, W; m+ c0 \" m2 g
  4. + a/ i1 K2 R$ p! j
  5. </if>
复制代码
必须改成:/ M4 J2 f: H- L; k
  1. <if condition="$id lt 5 "> value1% T4 ?" O4 G4 N" t  j( n% ?

  2. 7 ~5 e- ]8 I7 q5 o, }
  3. <else /> value26 S4 s% U+ K7 W& `" T

  4. / X% n2 s0 L  b. Z. H/ O6 S
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:9 X4 B7 A1 g" i  c  B$ A, q" c
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP2 b! G6 u: u. o& [$ P' Z7 _% ^

  2. 2 ]7 `0 k6 b/ F4 _4 \: K0 n. u& m" n* A, e
  3. <else /> other Framework5 B5 j! i2 @; e. P
  4. 2 b3 l) g( u) v+ t5 A
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP! w+ j$ M: ?  R' K, J$ a
  2. * _, G: [. f: }* U/ D4 L& ]) A, A
  3. <else /> other Framework
    ( y7 e" v. E6 {/ k8 Q. C$ a

  4. ) q  f3 G6 o! k* |$ R8 W* Z" S2 f
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    ) u8 @' ~/ r# P7 v% v
  2. 4 p" F: `! F$ W; t4 V
  3. <else /> other Framework
    9 s( W, b! P5 l+ N/ K* j" n

  4. - W' c1 i( S. \- v
  5. </if>
复制代码

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

  1. eq 等于(==)7 x* p7 ]3 m0 C6 V5 w
  2. , Y; g/ C8 T- t$ o- f2 V! q+ n' K5 y
  3. neq 不等于(!=)" e( q. g' U! ?7 K
  4. 5 d' i3 o0 E" R3 \6 `# ~
  5. gt 大于(>)0 Z8 K; g1 e+ S; r# q# I

  6. 2 S. H! h) p% @9 k6 w
  7. egt 大于等于(>=)
    + E3 p$ P) @2 ?! w

  8. " }7 X* p7 v6 q
  9. lt 小于(<)
    ) s  d* R3 d% w; ]$ @
  10. % }4 W% b  ]3 w! N0 s8 g# n4 [
  11. elt 小于等于(<=)
    ) \- h+ u. n- ~/ f, t; `
  12. 1 h( t, P9 l; H, x  p. c
  13. heq 恒等于(===)
    % e* V0 u2 x  A( P) `

  14. ! ^* K) ^( q! m  f* [4 N) X
  15. nheq 不恒等于(!==)
复制代码

$ x' g% @9 ~$ _$ d! g! S. X6 m


) ]( B8 A% R: C: B7 X注意* [5 }& N9 G9 [) t
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
. j: E8 y9 j* A" H( Z5 K: h提示
8 e( \- X6 C+ H* h在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
: R, K- x# h; Y5 s8 I2 \如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
2 K6 _) F- J: z9 O( G, z
8 q/ m: u1 `9 }6 }! S8 }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:47 , Processed in 0.118030 second(s), 19 queries .

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