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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:) `  r4 W# W7 O
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1& p& A2 Z9 N# |  T

  2. 8 H8 `8 |0 U% q( R7 s& j
  3. <elseif condition="$name eq 2" />value2
    * v; s5 z# X6 i. j# x2 J# ]. D* O

  4. : A$ b! h0 A+ J9 H4 u
  5. <else /> value39 t3 W- v8 [3 E. Z: i
  6. - k* z- J6 E5 Y8 Z! T& S6 @
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
1 f( V6 N- H% D
  1. <if condition="$id < 5 "> value1
    4 ?2 u: U, `, |, L' X$ k; z# a; m0 O

  2. & ^2 N. A$ j2 x9 m
  3. <else /> value2) k0 ~  S) B! G2 _/ S" O* L0 R6 D

  4. , }- ]' k1 ]( t
  5. </if>
复制代码
必须改成:- j0 \6 P0 T/ M1 L# J6 E
  1. <if condition="$id lt 5 "> value12 G# D/ g- L* o
  2. : A0 W' @! [9 [- d9 Q# A
  3. <else /> value2
    7 C8 {7 v4 M$ u7 p  I2 D) ~& c9 U. a) h
  4.   i8 I6 y# G1 }4 B0 I2 ?
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
  ^1 K1 e6 x1 @. u5 I8 B
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    " i/ D8 y1 m% A$ c( n, e
  2. ! x, N" n9 t* y1 L# p- x8 H* \. y6 e
  3. <else /> other Framework3 F( m; H3 x1 W/ h
  4. 7 Z2 o  C# J  x/ Z! R4 v
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP- |+ R9 {2 k! k* n
  2. # F, \1 S5 M  @
  3. <else /> other Framework
    " v- Z$ |: y$ q$ j( w! w5 n* C2 y

  4. 0 U1 |! O1 d  d# y
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP9 |) W0 g, \# U$ n5 e% e: {" ^
  2. 9 K+ b1 J( E0 j1 P
  3. <else /> other Framework
      d$ }* ]" u" ~! ^( |( m
  4. - |6 m) J$ b& A" c
  5. </if>
复制代码

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

  1. eq 等于(==)
    7 |, v9 I. ^; _. _
  2. 1 q) u8 l4 S4 R3 J0 Y6 `
  3. neq 不等于(!=)
    3 M; A- z: Q" f8 `( J1 e

  4. 9 B! ~* p! l9 M2 C; R. I1 @
  5. gt 大于(>)9 ~% H3 h- W$ w8 I

  6. / Q, K* z8 s  v4 F9 N7 S
  7. egt 大于等于(>=)
      @' L4 Y, j# _( B
  8. & u% P7 o/ j: ^; C) m' Q/ p) `
  9. lt 小于(<)1 D# l# |$ Y, Y7 C8 g" K
  10. 2 G6 d1 H2 N1 e8 v( B. x: w  m1 N
  11. elt 小于等于(<=)
    ) ]4 c; }3 [& x* p: H1 O  U, ?4 o; s

  12. 7 d9 _, @7 e2 I" Y
  13. heq 恒等于(===)  C, x9 U& i( k6 b, M$ z
  14. ' L/ z/ p! A8 g* `* Y6 }0 l! ~  x
  15. nheq 不恒等于(!==)
复制代码


# L% m+ Q" |8 j) T8 Q- S6 u/ H. Y


, }; r7 a+ ^: T: l& p9 \注意' ]# h( i& ~6 E( N# q' ~9 i
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
0 y3 H; W# g- k" _9 X" F提示
" k  ^: Y" q2 w5 I. q4 M6 s! M$ G1 \, g在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。4 R, m! i5 V8 g6 _6 b0 Q
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。% n* w2 A% a; k+ {* u

0 g2 D# \# r& V4 P; d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 01:35 , Processed in 0.112307 second(s), 20 queries .

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