cncml手绘网

标题: ThinkPHP模板中使用判断语句 [打印本页]

作者: admin    时间: 2018-8-2 16:02
标题: ThinkPHP模板中使用判断语句
我们可以使用if标签来定义复杂的条件判断,例如:
! V9 C* h; ]5 w, K: y
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    ( i6 X7 }, f9 ~
  2. " r* U: @7 ]6 g9 m0 W# F
  3. <elseif condition="$name eq 2" />value22 p4 S& F2 J+ g5 ]* N2 w' y

  4. - N3 {7 c; c) ?9 k( z
  5. <else /> value3# B% Q8 ]6 T! |. E# O: F7 R
  6. , |) R7 s1 k& L3 p
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
) |/ W& p: C% ]& P; }9 ^
  1. <if condition="$id < 5 "> value17 d. o- j5 J$ y  Z6 l
  2. * m) i1 s4 @0 E% \$ u
  3. <else /> value2
    7 Q3 k( K8 r* B" H
  4. " B4 @  Y: [# g
  5. </if>
复制代码
必须改成:
' J  F; N* O- }/ X1 j
  1. <if condition="$id lt 5 "> value18 w3 a# \+ x6 Q1 J- M  Z7 V

  2. / t" {/ d/ N/ F
  3. <else /> value2/ @5 Z0 \" U6 L* Y* q0 L
  4. ( d; \% \* |$ x5 O1 {3 d
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
7 v3 @3 G! G5 Q
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP( T. }7 U) Q1 r/ I1 v# c3 B

  2. 0 `& W- J! _% f" o( O. q
  3. <else /> other Framework$ ?$ @2 a6 U9 v) `8 A' i
  4. ( i! W; R. T: |( D
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    # w5 `! x1 I+ K( i4 a) K

  2. 6 E% S! }1 S8 q4 N/ u4 `  X
  3. <else /> other Framework
    & |  g8 {. F/ \0 q; |

  4. 7 Z# r4 v$ l+ E: a1 m% G) j! g$ U
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP( V$ W8 F0 e  f3 |
  2. ) f5 m1 J; ~9 ^
  3. <else /> other Framework  y$ K: i* G* I; O& \& t- Y

  4. " a  R3 F( |) p! l- {9 o
  5. </if>
复制代码

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

  1. eq 等于(==)
    : D7 x1 m$ \8 E# ]& n
  2. ; ~" ]& T$ E' G. b) @
  3. neq 不等于(!=)
    0 E% {0 `, w9 a5 p8 N
  4. ! @- `" p9 f( C+ Z
  5. gt 大于(>)
    ; z. R- n+ P" p

  6. ; m5 n9 j; z& k8 O! L& Q
  7. egt 大于等于(>=)
    / w- l) o& q8 L4 H+ M$ e( ^

  8. ( _2 F  J3 @0 X+ ^
  9. lt 小于(<)
    ) K+ p$ e% L& u/ }6 [5 m

  10. 0 {/ p, O  z1 O( v4 }, q
  11. elt 小于等于(<=)3 B; X- Q+ @5 D4 |  u' o5 y. j5 Y

  12. - o) x+ g# h: ]& O0 O
  13. heq 恒等于(===)
    & i: l9 m: H! X! ^/ a
  14. ! U3 t2 j' V' s; r( d8 w
  15. nheq 不恒等于(!==)
复制代码


. {5 }: \8 K% P2 w6 t+ f( u' ^

4 ?9 j$ {" b0 @0 O/ d. ]  S- @
注意# H/ x' [5 T( i9 B4 n: `
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。# ~6 D7 Y$ V# c( B3 d
提示
8 R; j1 k; h7 D: n( p7 Z2 ^在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
  ~( C6 B4 y# R- H, x如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。/ o& `% A9 x( R4 m

* p7 t" w) e, z0 Z& u( B




欢迎光临 cncml手绘网 (http://www.cncml.com/) Powered by Discuz! X3.2