cncml手绘网

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

作者: admin    时间: 2018-8-2 16:02
标题: ThinkPHP模板中使用判断语句
我们可以使用if标签来定义复杂的条件判断,例如:
: H: K5 ?" z, S5 o+ G
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1. I9 \: |/ ?. [, E8 ~5 o& J4 u

  2. ) |% c4 k) B8 V: k
  3. <elseif condition="$name eq 2" />value2
      t7 ?7 ]+ u" z( r$ y, D

  4. + P. S& \& x! c% V
  5. <else /> value3
    ( L2 {. a8 U/ j& _0 E
  6. * ^- E# t6 [: s9 O5 Z
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
6 O5 J6 `. S* z1 P
  1. <if condition="$id < 5 "> value1
    & I  d+ h4 T0 u* [9 Q6 N

  2. 7 W; Y) q8 }  G! B, K7 j0 |$ }6 N
  3. <else /> value21 b  Z/ b; l+ k* z3 H9 t. m
  4. * R! c. _) b) y; {
  5. </if>
复制代码
必须改成:
5 E2 v4 `7 ~* n3 \& _
  1. <if condition="$id lt 5 "> value1
    * t$ ]: x" U4 ]7 Z

  2. : W3 U  U% S6 S, z- S: g% n3 J& j/ c
  3. <else /> value28 p7 j" [' l+ {2 G& {

  4. 5 x7 ?; K: x* f: f, B* S8 r7 z# {
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:0 L) ~2 y' D2 w9 U2 `5 _
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
    1 x9 s6 n7 }1 S2 k; Y: }
  2. + E2 F5 T; h( I1 x
  3. <else /> other Framework
    9 m' [% p- ~3 ~1 F- ]: ?

  4. $ ^4 ?, L9 a. q: e! \7 ]9 t
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP* h$ w% [3 x9 j/ F; i  O

  2. ' q- Z8 w" y9 f6 T+ L
  3. <else /> other Framework
    1 i! R( ?, L) T7 }
  4. 5 ~1 j; R1 Y+ P2 h
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP8 [" n6 K1 Y$ p8 B; u- f. B7 y% t7 P

  2. 3 H- F% O4 {$ u* v
  3. <else /> other Framework! A8 v% b' I4 z. y* A* q  l8 h0 p

  4. - L" x5 v" X) _. n6 e' |
  5. </if>
复制代码

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

  1. eq 等于(==)
    - ^" W9 G& k3 Z/ A

  2. . V" }5 a' ?6 {5 C7 V' {% Y6 m
  3. neq 不等于(!=)) E3 ^3 H0 l0 x6 E. O2 ?" F

  4. 9 q& h5 c* j5 d0 e3 G% P2 d
  5. gt 大于(>)4 _2 f# r1 `0 U& a+ W4 |
  6. * o! J1 ?8 @) I4 b, h3 k9 p
  7. egt 大于等于(>=)
    ' i  @9 k1 R- n) E
  8. - ?/ M( Y( X/ P
  9. lt 小于(<)
    7 G! _2 D0 d: x2 K. k1 u
  10. / f; S# r& o9 _4 ]6 p" _( t+ t/ C
  11. elt 小于等于(<=)2 [6 v# W! ~+ R+ \; P
  12. 9 g9 V+ d  O# I% n2 R: U
  13. heq 恒等于(===)
    4 z  ?& c- b: l8 v. |# K" @
  14. : X$ ^$ ]* V1 V' q1 V. J- @
  15. nheq 不恒等于(!==)
复制代码


4 M: Z3 w' \( ^% Z+ Q1 T

3 P( U( v+ S4 D. Z8 f
注意9 O9 W$ ^" e* g
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。  v8 p! }, B' Y% Z* F
提示
4 R  L+ K3 C& ^% E在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。1 V9 d/ `  b$ d% F" i% V/ D8 r3 I' i
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。
( L' S! [: Q3 V7 p; r  w% _/ O/ j8 [( G. Z" i! J





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