cncml手绘网

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

作者: admin    时间: 2018-8-2 16:02
标题: ThinkPHP模板中使用判断语句
我们可以使用if标签来定义复杂的条件判断,例如:& ?+ L6 l4 j. C1 I
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    ! D8 ^$ f5 l  H3 m6 C

  2. ) `) [# _% h5 f% {- C1 e' S
  3. <elseif condition="$name eq 2" />value2" x4 y, Q8 a! p4 Z/ ~) h/ k

  4. 6 \  x# X/ f4 \& R$ _, T
  5. <else /> value3
    9 D: j/ `! `2 `" A9 l

  6.   r1 Y4 q- c! [2 u9 {+ v
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:9 d' G7 v) ?7 d% p; `
  1. <if condition="$id < 5 "> value1
    * @" a0 T- a6 h7 t: s( e. o
  2. * }4 r; i7 I* Q1 U
  3. <else /> value2
    $ [% j' n4 b& r0 o7 j5 E0 r7 r

  4. * m7 x$ Q6 L$ I; T8 S; q1 l) b
  5. </if>
复制代码
必须改成:
  @: v. |) C) P: {7 A
  1. <if condition="$id lt 5 "> value12 d2 k" z# x. L
  2. * Z  @7 o1 c& ]; ^, }% s: ~
  3. <else /> value2( o1 [" ?3 o2 [! P

  4. # R0 J- `0 b# ]
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:' [( w  x2 t3 }3 q% u% \
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP4 n# t( \- z6 z2 j5 \" F$ n
  2. 1 [0 `9 r' \8 ?
  3. <else /> other Framework) n) s! l; r* r; N3 b

  4. 8 ~5 Q8 R& u" d) p0 W  F) L
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP7 V* c& W: h, b+ o- X' ]
  2. - ]; ?$ L* W: G  w
  3. <else /> other Framework
    7 `8 g/ t' |( @& s) I! \
  4. 1 t5 D0 S* D4 Z( t( C/ U
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    / ?/ A- v3 s" `  i. Y! e7 t

  2. ; C$ M. ~# b' M, [: U0 n3 r$ }- R+ B
  3. <else /> other Framework" }% l( s5 ]! v. G# f+ e

  4. 0 w2 [5 I& l! D0 z5 }6 @
  5. </if>
复制代码

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

  1. eq 等于(==)
    + T" Y+ o$ j4 c5 V, I9 `8 O) b- g# t( `
  2. + s/ Q2 _2 b" j5 j8 H8 ~3 K# w
  3. neq 不等于(!=)% h2 L( ^- M* u8 q% `" G& F' Y

  4. 6 G/ x$ @/ |3 s7 C
  5. gt 大于(>)# ^. g* j" R3 Q

  6. 6 O+ K, ~( o; [7 u( \6 u2 T4 f
  7. egt 大于等于(>=)( q: ~. N& B% k% I0 t/ P
  8. 1 R+ T* j3 `$ C4 E" S- w* G" _, j
  9. lt 小于(<)
    ' r5 n5 f4 l3 P0 n+ q- L
  10. ( v- A$ i' h" O2 y& D- P0 e
  11. elt 小于等于(<=)$ K# J7 ~& l/ M/ q. @
  12. 6 ~; s: o! Z  M8 T) q2 A. K( B  a
  13. heq 恒等于(===)
    . G( K3 x# Q' v/ n7 k0 h$ \
  14. 7 |" D8 R0 g) L7 Q3 \
  15. nheq 不恒等于(!==)
复制代码

, G6 z5 N% v6 g


* ?- Y( f! [1 h* r* d注意7 c! {1 {; l* y) U) \1 x, k
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。" q2 C: e" c* O: m- A' [, k) A
提示
/ T' e: |5 o, r$ x$ G0 V在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
' Q8 O8 j) r5 P如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。  G4 A7 \% I, a. M, i/ C" Z5 q3 Z

& j8 d  U  b/ X




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