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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:  A) Z$ A( Z* I2 ?4 f
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1: i- \  _& u, G& d( L
  2. / x$ D0 T5 M) M8 m$ P
  3. <elseif condition="$name eq 2" />value2
    # Y" N+ i0 Y* A3 I9 M9 _

  4. ; s7 [1 S9 D& p: ?6 X- n$ Y
  5. <else /> value3) W7 @0 X6 o* W% p) ?

  6. - S& g3 `" w/ Y- B3 `
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:/ ]& @9 f: a, Z  z
  1. <if condition="$id < 5 "> value1& @8 s# [3 _+ ?# P$ ]& Y; K
  2. ) `9 ?% L6 {. f, }  v- ^# U6 U* w- U
  3. <else /> value2
    2 t' h6 K+ F# ?7 A* N5 ]3 ?- q0 `

  4. / D$ ~4 L: z2 P1 I0 k3 ^
  5. </if>
复制代码
必须改成:
3 Q1 t  F2 z5 R( ]0 f# `" {3 o# ?
  1. <if condition="$id lt 5 "> value1
    5 H- c* l9 F/ U6 f( Z# G. I
  2. ( O  I& I' K2 n8 o9 b
  3. <else /> value2
    9 g* @: w! X: z
  4. 9 ]- U7 e+ V$ j+ ~* K; y
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
* X1 F5 T; j& F
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP: `8 P% v1 u8 p0 o3 n2 J: W

  2. & F/ v8 n7 r5 S% |; A
  3. <else /> other Framework  h7 }) ^' [) `' Z7 @

  4. ( E6 R8 R! p; ^: c7 \/ b
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP# S$ L1 b2 X8 u
  2. 6 x" ^$ w# @! u& d1 X) e# o$ [
  3. <else /> other Framework
    7 D: w: h2 A, `7 C+ c, Z8 T+ Z
  4. 5 d6 X% w  ]) B6 h% ~, P# U2 o6 c1 d
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    & R. _. {+ o, w& [

  2. : U: _: h; {; V1 D3 z  O
  3. <else /> other Framework
    1 h' _. s8 ~0 S
  4. # Q+ ?& J* w' f; U
  5. </if>
复制代码

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

  1. eq 等于(==)
    8 x/ J" I, z5 X( d4 a3 w4 y" [5 H
  2. 7 x( j+ s! ^9 }; a3 f, r9 ]
  3. neq 不等于(!=)3 R3 T  N( w! d+ h  m, D5 a7 x; N
  4. ) l/ T( b3 b" D2 U' H
  5. gt 大于(>)4 k1 t6 c. b" q8 v% a) W

  6. ) g* ^/ n+ F, @1 A
  7. egt 大于等于(>=)
    9 ^2 u' F: V6 [5 X  {
  8. $ k( O8 k, }2 a
  9. lt 小于(<)! h2 R% E: P/ G# c
  10. - N( M, p: {2 Z2 y
  11. elt 小于等于(<=)
    9 i+ B+ K' \7 C
  12. . n1 x. f1 c5 ^4 ]0 T0 c2 o+ h
  13. heq 恒等于(===)
    , ^) x+ q+ j' B) O9 O6 _
  14. 6 G$ ]1 m+ {2 i
  15. nheq 不恒等于(!==)
复制代码


# S% C; u7 _: v# ~3 l" i9 N

" q7 g9 C, K" C3 K
注意
& ?5 i/ \# L; @; i6 h+ e7 Ycondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
: q0 Y7 G- M: p& f1 F1 q4 N提示. O( H5 @  S0 z9 F' C1 ~( d& _; R' y, B9 n
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。) }0 ^' ~8 |- P$ P! K$ `; Q9 }
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。# }* Q- C9 {" J6 n7 x

2 l, W# t% v& P2 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 19:59 , Processed in 0.111279 second(s), 19 queries .

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