cncml手绘网

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

作者: admin    时间: 2018-8-2 16:02
标题: ThinkPHP模板中使用判断语句
我们可以使用if标签来定义复杂的条件判断,例如:8 u0 [7 y% m- [7 E8 G+ ~5 L# }: u' O0 J+ ^9 @
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1) R0 S8 C5 O, v& L

  2. ( A1 v7 Y! f/ {4 a* }8 J7 X- x
  3. <elseif condition="$name eq 2" />value2( M5 l3 \& E9 u) @

  4. ; I$ y+ b+ x; v) M
  5. <else /> value3) {! }5 T: R$ C9 y( A  c. C1 A
  6. 8 m1 s& s3 Y. ~# O
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
* `8 _7 x  D& \, a" H. l) @9 C  m
  1. <if condition="$id < 5 "> value1
    7 R. C1 t% r' @+ ?! L: }; y/ z
  2. 1 D- @7 ^8 t  ]& s8 G
  3. <else /> value2
    $ `% u$ \4 v) t  P$ S# W  F

  4. / y& B7 n; B& O  N5 D9 H. h3 L
  5. </if>
复制代码
必须改成:
# ?3 }( D1 ^. W) N2 O) F+ C
  1. <if condition="$id lt 5 "> value10 a- y) L5 i3 c5 @8 g

  2. ) g5 e# i" q+ N) f8 S1 B
  3. <else /> value2+ u* V: w; }# G0 B, y# C* q
  4. & h7 r+ c+ a0 f# f9 ^8 \0 O: \' e8 P
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
; o3 R0 S0 i8 |4 T0 u. u' e8 j. ~9 b( x
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    : N3 K- R! D, ]0 {

  2. - s& F, k3 \4 u
  3. <else /> other Framework
      q4 ~: |8 |$ ]8 X
  4. # `9 o/ N3 Q5 y' J8 j3 r, w5 d5 a
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    $ J: k- I+ ^+ y
  2. , Q) b, ]- L  @. h4 x3 ^) f* b
  3. <else /> other Framework8 F( M! h* i9 ?8 \4 T7 W
  4. 8 j& s9 v6 j$ |. l
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    * Y- s4 l2 l- O% [8 f; K# ?9 B- }7 o

  2. 5 d! U) W# N1 ?) u$ {. a
  3. <else /> other Framework
    ! a! m2 V3 Z+ g/ [7 u  O8 o
  4. " Y; D% Z; A6 x+ P9 X
  5. </if>
复制代码

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

  1. eq 等于(==)
    5 u0 ?% Y) A3 A8 L

  2. 4 O, F& B- p: N4 D2 Z" f
  3. neq 不等于(!=)
    3 h2 ?9 Q  t) d
  4. ! @+ L) V/ C" O" M1 J
  5. gt 大于(>)
      z8 V0 O# A4 o# W  d! Q
  6. ( y/ O* }& a3 A* W$ p- I" L9 X. c4 f$ j
  7. egt 大于等于(>=)
    0 Y! P( x/ k& b; X

  8. 7 B  ?/ ]3 b4 h3 t5 C; i
  9. lt 小于(<)# ^; s& u, O1 d7 }  N, X

  10. & `: ^4 Y4 j8 e6 W, W3 e" x& {. q5 _
  11. elt 小于等于(<=)
    8 [( u) U) o" u
  12.   ]9 l' v1 ^* O% j4 U/ o/ K+ n
  13. heq 恒等于(===)* f1 D# W/ c- d; u5 @; y0 W1 x! b

  14. # ]$ w' H+ X' y3 x) b) Z7 S+ c' `
  15. nheq 不恒等于(!==)
复制代码


' i* `4 [: k, l1 w

& N+ e2 z2 V0 b: v# m/ J
注意" K' ^" k4 b) i2 K# h$ X
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
7 s) ]! k9 [, l* t提示
/ U  m8 A$ U8 j; g在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。1 Q3 ?- D1 k% j: e+ \
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。+ ?' C& O( M3 I8 Q5 K9 ~! r

7 g8 c$ }* I2 [6 L5 `. C  ]




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