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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:+ o4 z. R9 S) V& \% b1 {
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1" `' T, J+ R5 r! y9 K! o

  2. . H7 N6 A6 J  S8 H( V  h, b+ n
  3. <elseif condition="$name eq 2" />value2
    * R$ ~& m# j9 ]( T
  4. 1 i4 o$ O0 I9 c; r* G( M5 M
  5. <else /> value3% y" k" a9 s7 z. \

  6. $ w% ?5 D0 \# u
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
* T9 X  C1 y# M# F( g
  1. <if condition="$id < 5 "> value12 e) F, z2 J% b2 v1 s+ X0 B
  2. 7 v- P8 x( n* ~: {
  3. <else /> value2' ~& L8 A- n5 b& p9 K
  4. # Q$ K5 w/ A4 `0 w
  5. </if>
复制代码
必须改成:
* P/ y7 I4 U, F! l$ H  I
  1. <if condition="$id lt 5 "> value1/ w# \1 Q; u$ o& ~+ x/ v8 x) E
  2. 3 h) p% ^% `1 u+ {  H* k$ e
  3. <else /> value2. p( C* m9 U* H$ l" e4 U, T

  4. 3 ^  ^1 c. g- G/ c" H: \! }) K
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:4 I0 V& {3 Z, x& w" C- V# c, O: G
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
      X, y# b1 \" L* V9 e
  2. ; D; k4 k! n9 [( X# }- v* u: G, ^
  3. <else /> other Framework6 G1 h$ R2 \$ s, }0 _. M2 g# s
  4. 3 n0 w% Q  g3 |8 z" @
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    ( S% ?9 z/ z( W
  2. 3 l# Y, i( o+ K, n
  3. <else /> other Framework! K/ h) b$ _8 ?( v6 j# @9 y
  4. 1 }. D* P( e( ]3 ?6 S! l6 W
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    , {7 W+ g2 T7 l8 B- e

  2. ! w1 |2 S, k6 v. {; v# a
  3. <else /> other Framework
    ) _; c: B2 I: b7 Q+ N6 `4 G$ Y

  4. 9 C3 j4 h" F; i4 A
  5. </if>
复制代码

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

  1. eq 等于(==)6 o* n2 P( V# V" L" ]
  2. 2 G. L) o5 T2 w  n8 S
  3. neq 不等于(!=)
    5 w. o6 E0 S5 A$ w

  4. , E3 D: t+ O: d" [
  5. gt 大于(>)
    & U0 [1 T4 ]: @9 A# b4 B. q$ Q
  6. - P2 X) g2 N  A+ r' _1 ~" c0 @' H1 [
  7. egt 大于等于(>=)
    * `. t, ~  _: i! h

  8. # g" C( D) D5 a$ |1 t
  9. lt 小于(<)' ^, q  W& Z2 F4 N* u6 _

  10. ; K7 z& y; l6 A# ?) c
  11. elt 小于等于(<=)8 Y1 U+ f7 f# z% U; d) c, A  W
  12. 5 k; j; j; ~8 Y
  13. heq 恒等于(===)
    / q* Q$ p6 _! D" X1 X
  14. 6 I2 _# e+ Y3 p: U2 j" L( }) ]
  15. nheq 不恒等于(!==)
复制代码


( k- a+ W4 g$ c  }( b

( b; y( }5 v. y( ~
注意
4 M! C6 ^0 ?) D: econdition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
" z( M- b) H  M/ ?提示
$ E5 Z; F8 b8 D- C4 g在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
5 a8 j$ H/ `; V* u如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
7 ?5 Q/ ~  r/ o3 _8 [
7 X" x5 ^' L8 ?2 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-9-29 09:38 , Processed in 0.115925 second(s), 22 queries .

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