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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:1 K$ z; Y2 a5 l& R1 w, L8 j
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    ; G7 S- e/ ^% e
  2. ( Y9 `% {4 d; E- V$ @9 P
  3. <elseif condition="$name eq 2" />value22 [% _( R3 y- B: X6 }+ O, ]

  4. $ ~$ U# G" Z9 W0 U' \6 U4 @
  5. <else /> value3
    ! u' U, K9 E) b0 Y4 P2 N/ y" D
  6. " X7 c  N2 K- K
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:" K0 r0 F) @6 D% E! `7 M- l2 u" I
  1. <if condition="$id < 5 "> value1/ x% h; n  F! w

  2. . @& r( j1 H& X0 J
  3. <else /> value2: ]4 N$ k* B8 w) e# O; V$ H7 p
  4. . W6 q& _" C* x9 H
  5. </if>
复制代码
必须改成:
  g, F  I) @) L7 x5 O/ x9 W1 W% N5 F
  1. <if condition="$id lt 5 "> value1
    + h/ _/ I( o; W/ h5 ^( w. a
  2. ) v# G; R) k: i3 n- @% ?
  3. <else /> value2
    ( ^, R1 t7 l$ L# _1 r) Q# u( a

  4. 4 P: y6 ~. F0 H$ O3 J: O" ?
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
! ]/ V" `, }& I, O+ o
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    - d$ M- d* F: R% E) f: f

  2. + N' _, N5 j! ?7 M2 a
  3. <else /> other Framework
    6 h5 z% j( y* A8 a$ ]

  4. ( i" ~; c* Q2 Y* |) F# V
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    ! C& _% `/ Y' u8 v7 N8 E( W+ D
  2. 1 \0 A7 M' @3 ?' J$ V, `8 U
  3. <else /> other Framework0 M0 X7 O' A3 O
  4. ! v. O9 h4 W& `. R
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP5 `9 j! N5 [2 q4 s$ u' c: J! F! o. {

  2. 5 g7 S7 y$ _/ T
  3. <else /> other Framework
    " v2 o* o" Y$ t5 |! N; ~/ W) q2 M

  4. 0 _8 j# L4 Y" Z$ e9 H' {
  5. </if>
复制代码

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

  1. eq 等于(==)5 [3 y; g1 i8 Y0 l" H$ I+ c' g6 t
  2. 1 ~$ K0 {# E! N. Y8 g2 T& [
  3. neq 不等于(!=)* @9 m% M# K# F- K; t

  4. . k6 [6 f& J' M+ j
  5. gt 大于(>)
    & D) o2 X6 q7 J& \, F; D/ f9 v
  6. ; X0 E1 R* A# O
  7. egt 大于等于(>=)
    % L2 u/ q4 O2 c  a  [- I

  8. 0 d3 ^$ n. d" d( t& E) R( v; D
  9. lt 小于(<)
    5 a$ h8 r9 y9 z6 H0 P9 I
  10. , F! _# g. C( o* c% m) m  l9 Y
  11. elt 小于等于(<=)1 s& u1 o5 e0 C; z

  12. 4 `, N6 ]$ E/ S1 B
  13. heq 恒等于(===)- E8 b# [7 n7 z1 q  s- w6 S# E5 F* [

  14. ; G  a& R" ]2 k
  15. nheq 不恒等于(!==)
复制代码

" ]) Z) T% j/ u  Q


# g% q4 ]* _' r- H; E4 v注意) L% g, Q/ r, E
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
- E. @" e, M; E/ Q. o提示
* I6 i. |3 F) Z! ?* l+ [( W在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。1 V8 B+ D; h5 o- a0 f( [; r
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
2 f+ z% k- R4 s6 ^& J: D2 u4 O
5 s6 e" Q! d$ n, Q. B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 01:09 , Processed in 0.120625 second(s), 21 queries .

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