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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:( Q4 I+ H- `2 d: u( F! m
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1  }3 _5 K! a) c9 T( i- }$ V! j1 N
  2. 2 c& ]0 T0 b* Q
  3. <elseif condition="$name eq 2" />value2
    $ x+ O, e: A- b( u
  4. - d' g* L2 @: M9 [
  5. <else /> value3$ H1 ]/ Y' i# \. o2 G8 Q% H3 W6 ~
  6. * V, Y- |; R! p9 F0 P% [' _7 y
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
" f9 `' m7 T* A1 B5 j/ X
  1. <if condition="$id < 5 "> value1, n( D1 R, c" u1 r6 D
  2. . ~' R$ N0 w1 `' `  ]
  3. <else /> value2
    ( a2 q( W  C% i! t) ?# e7 q

  4. / A# K7 W6 a" l: Z/ o) L2 k
  5. </if>
复制代码
必须改成:
8 h: ?! h2 p% K, e/ h$ ^7 F
  1. <if condition="$id lt 5 "> value1. I* m. `9 a. {# O+ I
  2. 8 Q- _" u7 E6 S+ S$ g
  3. <else /> value2; ]0 H, d8 d/ }1 m3 T  X; V: V
  4. ; k& c) K+ t4 p$ G4 _$ k$ a
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:* ~* P! s0 @7 E- M# ?3 P  z% @- h; t
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    $ b# R; P' b* J# G- _

  2. 2 T, p" J9 ^: }2 _4 W9 \, ~
  3. <else /> other Framework
    ' ], ^9 A+ T7 ?# h* o" ~
  4. $ ~$ b5 @) V; Q7 v
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    2 P$ I$ p! p$ q  L: w
  2. . y: q' a* N/ }! U5 G! J: Q
  3. <else /> other Framework! b4 ~! t- \, M3 F/ |/ h0 f: y
  4. - L1 b( y( o& {/ s- K0 I2 S
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP: d- S8 P" X1 C1 Q% T+ t; Y' o  M0 D
  2. 2 R9 H3 P& I* ]
  3. <else /> other Framework
    ! _' }. q- E& l( s' s5 p

  4. & s  t7 e. z( I8 r
  5. </if>
复制代码

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

  1. eq 等于(==)
    6 ^  O3 {& I* d& s* K9 |, _# f
  2. $ \' M% V$ A+ a) o: V3 s
  3. neq 不等于(!=)
    $ x! y7 X. V0 r

  4. " X! C' w/ |# w. Z6 }' S  ^
  5. gt 大于(>)
    * [1 `6 H" z& y# e( y9 p1 D
  6. ; P& F+ Q5 I% P. U
  7. egt 大于等于(>=)
    6 {- q# u' w9 c+ `# T
  8. 7 E. l& m9 D% g: q
  9. lt 小于(<)
    & }1 c2 y- Q3 h

  10. ( p# |# [. B8 ]9 l1 R% b0 y( N0 r3 Y$ w
  11. elt 小于等于(<=)
    : L* y5 t$ z3 n4 t* y

  12. 8 C4 b1 A6 w1 Q/ U* p) e* ?
  13. heq 恒等于(===)
    4 m2 C( N9 P9 I% |
  14. 3 L# \) y- O7 F( ^& K+ ?
  15. nheq 不恒等于(!==)
复制代码

7 U0 a( i% _& C) S( f$ x* u- l# W

$ C5 @! ]% m7 N9 h# n' E
注意
, R. J) q# q+ G) M1 C. H0 Vcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
$ v$ s( J' I+ i$ n提示4 u  p( \4 ?% E" @- l2 V
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。; h; V# v3 R+ C
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。; Q* G: S. G6 N' e, h

" Y* t* Y: ?* O) U$ Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 02:24 , Processed in 0.115173 second(s), 20 queries .

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