cncml手绘网

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

作者: admin    时间: 2018-8-2 16:02
标题: ThinkPHP模板中使用判断语句
我们可以使用if标签来定义复杂的条件判断,例如:
9 V( y' Z0 B4 ^7 u0 @' ?% p
  1. <if condition="($name eq 1) OR ($name gt 100) "> value16 h) h; k$ _% W

  2. 8 z$ C$ k- u$ R
  3. <elseif condition="$name eq 2" />value2. F9 o8 p! w" a4 l8 ~5 K' b

  4. 0 I0 x2 j/ p# e1 j
  5. <else /> value3) u, {- W: s: ^) X5 r; L, ]

  6. . v. |) Z3 O2 B" N& W( F. g
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:7 A* M# Q& J* A# f) |
  1. <if condition="$id < 5 "> value1! {, X0 p" }: ^8 \! s
  2. ' a, p- a* X7 S
  3. <else /> value2
    . D6 e" t6 E, G5 @) ~

  4. 0 s/ k& \9 Z) _8 a' ~# z3 R
  5. </if>
复制代码
必须改成:
' F; I& Z4 i  `
  1. <if condition="$id lt 5 "> value1( X, Y( ?/ g* ~' W8 u0 i& |

  2. " j+ S! ?( d& j: H6 M, y
  3. <else /> value2
    $ r* E/ Z1 V; I- q# M3 z* C4 q/ M
  4. ( S' Q( f1 s$ @" V9 A
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
$ e7 U( S( `5 [8 `1 {- k
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    2 D. U7 K8 A' T1 K/ e3 }
  2. 4 c7 W. H+ H( W* [0 [3 R8 ?
  3. <else /> other Framework4 H. |5 g/ \' M

  4. / M+ S8 {% E& x7 V8 Z. M, s0 U
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP/ k4 X: a- I6 c6 c( X2 m- f7 x5 d7 Y

  2. 7 ]6 \; N5 M0 {- F0 T
  3. <else /> other Framework& }" @" V* P  s% U

  4. 1 T/ h  n4 d4 M" G7 P4 T4 [
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    ' g! Z2 k; ~& b8 B, X. u
  2.   A/ a) g2 F0 f% M. z
  3. <else /> other Framework  G/ L  N9 S" K# p: `+ r3 G
  4. ) @' \2 ]/ \: l) `0 \( `
  5. </if>
复制代码

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

  1. eq 等于(==)
    / J# ?/ Y+ f/ _7 ^' R3 }
  2. 6 I8 w4 v5 W: w6 d8 Q9 k  `
  3. neq 不等于(!=)) r3 I& J. p6 p3 U% N3 I
  4. # Y$ L* [9 z6 Q1 p
  5. gt 大于(>)- G, e7 E% s6 ]9 V  N

  6. : Z/ h$ p0 h5 O, H, L  D
  7. egt 大于等于(>=)5 }& k# j5 f' i4 |

  8. # u, E! _3 X, h" J* l1 Q% K4 c
  9. lt 小于(<)
    ; b0 V. a4 Z$ G% {

  10. , r3 ~3 W+ j% [
  11. elt 小于等于(<=)
    9 b" S4 L& X4 l3 x) T
  12. ( h2 N0 O* x  \' {/ |
  13. heq 恒等于(===); S# k' W- z" ]

  14.   m' _6 x0 ]0 c7 y  r* ?' n
  15. nheq 不恒等于(!==)
复制代码


! y& [6 \7 J1 d8 c; y


. v- Y# U' U: X7 ~  b- Q注意: \' P- A5 }6 a: ^" D
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。+ T$ z% z8 w. M! Y
提示& E7 k( ~) [; f: k( K
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。5 I4 o% ~3 Y# m9 f# f& e! a" G4 Z0 H
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。" r! y# s. G) Z: z
. X( Q* X! h5 S5 m- K1 O2 A7 }+ h





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