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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:9 l3 H! a, H/ K- J
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    / U" H' m4 r" ?7 ?8 A+ q7 j0 g& m

  2. 1 ^% Y6 J( @6 y4 z) v
  3. <elseif condition="$name eq 2" />value28 M( Y6 W0 C* [3 ]% {2 w; y& _$ X

  4. . J4 B. p) @# L) T" A; r5 ]
  5. <else /> value3
    ) u- F; L- K( N4 I
  6. ! x6 n6 M. r* V5 g- k6 l4 Y
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
7 Q5 p) \% I* H
  1. <if condition="$id < 5 "> value1
    6 l' H8 Z& m5 c  n
  2.   n( L0 N) z2 j2 K  V2 E  k
  3. <else /> value2
    9 @3 \5 i' o  C; r; S4 Q
  4. - R8 J& l1 V5 Y& g
  5. </if>
复制代码
必须改成:, S3 b0 Z6 [" ?& R' O
  1. <if condition="$id lt 5 "> value1
    5 X8 X4 X( n7 S4 ^! E

  2. 7 p9 s8 `" u9 R6 ~3 W
  3. <else /> value2
    ! n  Y5 ?. h' c+ [3 f! @8 C
  4. 4 ?6 R/ H7 F. [3 {/ o) P2 \  k# G/ V
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
- [, ]! W& ?4 J
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    & d! ?% {& r) s( i4 P- f

  2. . t/ ^4 g' t5 O( A
  3. <else /> other Framework7 ]( e9 k  ?2 ~. w& C
  4. 0 p4 X* l4 c4 e5 J! Q# q4 [
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP3 V- ^- }9 |+ j3 K& D
  2. # H! V$ g/ U% \) T
  3. <else /> other Framework
    5 J6 h8 u, @% K* V: J$ C
  4. ; o( @  D" t6 ?$ v, a! L
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP# g9 w) @  c; N2 U7 _# ?3 s
  2. $ J, c/ E/ q8 c, V4 h- E1 v/ s) i& W) w
  3. <else /> other Framework; P* J. F4 u3 l2 t, W5 q
  4. % l0 L% Q% Z# f. d$ X
  5. </if>
复制代码

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

  1. eq 等于(==)& b2 |+ ]: R+ D' ~, Z/ H

  2. 6 A5 P7 E( P) ^3 F' B
  3. neq 不等于(!=): b3 X0 ~0 f# o

  4. 7 U4 n0 U" T% p- f3 `
  5. gt 大于(>)1 p+ c! i' A2 W* ^5 \8 `& V

  6. 6 z$ t* S! f, ?
  7. egt 大于等于(>=)" j* P3 t: h! _( v- v
  8. 9 {7 |& ^9 z* r& ]& t" ^( |
  9. lt 小于(<). `( `6 X' K* b$ A8 ?
  10. % p& s$ b& G* \& f
  11. elt 小于等于(<=)
    % N8 x3 Q2 m. I

  12. $ y3 w( l8 m# H( }  V
  13. heq 恒等于(===). P) x; z4 I% L5 V$ d, o

  14. 1 N0 x+ J- ~& q7 }, v! t  s
  15. nheq 不恒等于(!==)
复制代码


' m2 L4 B5 ^8 j5 w* n1 W  ?

  l' J- y9 y4 {  J
注意
* l2 l3 W- C: [. ~, ^; H/ fcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
) Y3 e6 z: s! a+ @. r4 R- ~提示
* w2 D3 v, Z& @1 I0 m1 U; f, {在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
# F9 K5 K( P0 O/ {如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
1 L9 _  F* E) c+ o/ ~! b( B' y- E7 g* I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 10:37 , Processed in 0.116168 second(s), 19 queries .

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