您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15162|回复: 0
打印 上一主题 下一主题

[thinkphp学习资料] ThinkPHP模板中使用判断语句

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:6 K' V: x, Z8 M% O. L& t$ ]8 e
  1. <if condition="($name eq 1) OR ($name gt 100) "> value14 N% X, \& Q* f: i$ C) M

  2.   c) D' q0 n/ u5 m  y% x" ~
  3. <elseif condition="$name eq 2" />value25 e2 @2 d6 n0 R5 h, W

  4. / L. p" w0 S$ f7 `  d/ _4 l+ _
  5. <else /> value3% B& s8 r& l7 t$ W  p  N- {! H* y3 ~7 X

  6. " G0 t1 ?. B9 B9 l0 R+ a
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
: @, P6 L1 H6 I4 W
  1. <if condition="$id < 5 "> value1
    1 V% q  t% G$ o6 ]! ~! L
  2. ! e0 l5 J" F1 S2 s
  3. <else /> value26 |/ x+ R" r1 K& A
  4. " b; k! ^, c  L; _
  5. </if>
复制代码
必须改成:
& C8 V' d6 Z! M4 x
  1. <if condition="$id lt 5 "> value1* m0 i3 V$ C. M, [2 A7 w$ D* h

  2. ( p$ H$ X0 ^! q, c, X
  3. <else /> value2
    ) |  i5 B8 o! v! ~; V6 v0 Z
  4. ; d# w; e3 D( ]7 c, ~' `5 P  {1 y
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:% H) Y* H( I* N1 c- \' q/ w4 \
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP- c  O# _% g  W* f; I/ n

  2. * @3 K) f, `7 j  ~7 w1 L& Z4 N
  3. <else /> other Framework
    8 O& k' w+ k1 F9 f. R2 D
  4. 7 a7 s4 n. M4 R
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP$ g4 r  A+ u' x5 n% h' Z4 Z. C% t

  2. + o* f2 P; p4 M; C' N( J' _
  3. <else /> other Framework
    ) n4 L" q7 x9 O' F: B8 C. f6 t

  4. ! {) r& B+ _8 _7 h+ o* T0 L$ A7 _. B8 F
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
    2 e' J: a( i/ S# e, N) ^! @

  2. / R' n  o  @' V5 _, d! D: G7 }
  3. <else /> other Framework, U' w8 _. D9 m8 s
  4. : k+ J: x+ G  T3 B/ I: }
  5. </if>
复制代码

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

  1. eq 等于(==)
    - z6 i3 A" K0 }

  2. . {( i$ B( O9 U' U$ N3 U% ?
  3. neq 不等于(!=). H& P& A: b! _1 r
  4. ) z# H1 ^* T( R  A) a/ K
  5. gt 大于(>)
    # X3 e- D5 ?- L9 E7 s1 z
  6. ! c7 P; ?2 l' h
  7. egt 大于等于(>=)
    % y* r, v9 C. @' l6 e4 J
  8.   b1 a' y7 B( I, g1 d& A
  9. lt 小于(<)
    ( i7 S( n* O1 [0 P
  10. " v% L) R( ]/ Y1 i, Z0 b
  11. elt 小于等于(<=)
    1 t; G! U9 [+ Q7 A
  12. + Q$ W- t. v+ t+ m
  13. heq 恒等于(===)" P/ a$ `) M, i7 c- ^9 O+ L
  14. + O2 M) a/ T9 M& U2 A
  15. nheq 不恒等于(!==)
复制代码

; F0 J) T* x6 b, b


: q9 {6 }+ n9 W4 \9 a注意
2 C9 |: X  I% v$ R- R( |8 W; Jcondition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
! j6 ?/ m2 ~; w* M+ z) [& H提示+ X- V" m/ s; v
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
( w/ U4 l; q) m7 ]6 G如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。7 I0 x5 A1 i* L) e6 f; f

2 P# ~/ V  H4 r# L+ b6 v0 |, Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:14 , Processed in 0.054734 second(s), 19 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!