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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
$ O, K3 W% I! P3 r1 p7 ?) l3 m
  1. <if condition="($name eq 1) OR ($name gt 100) "> value19 k  V0 y0 U% \9 e
  2. ' c! f/ D, @8 B( X  A; n  x' W
  3. <elseif condition="$name eq 2" />value2
    9 ^, b$ z$ t( b
  4. 4 }& O( d/ F6 e. j# E
  5. <else /> value31 f( n# t/ T1 _9 ~

  6. . w2 U+ M# g+ \/ U0 S% a5 v; B! V' |
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:# N3 n5 ]& l* N. A
  1. <if condition="$id < 5 "> value1- C- s8 F3 t, y" v+ {, x

  2. , n/ u9 k$ z0 U! v; e8 n4 h
  3. <else /> value2* M) r" P5 S" Z+ n  ]

  4.   [) c! _# ^& {8 o5 ?% _
  5. </if>
复制代码
必须改成:
6 l  a! C4 Z. C5 G, [. j
  1. <if condition="$id lt 5 "> value13 Q8 ?7 q2 A; p( A, J) C- c
  2. ; r8 `$ g8 s4 c2 j# {$ {4 {  J( ]
  3. <else /> value2! l3 `  s2 g( x" N* l6 X

  4. % {1 N5 d' c0 k$ b4 K' }
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:; o4 A+ N' _  ?* ^  ^3 a
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP2 [; T. x7 P" s" U( o9 ?
  2. 9 A, l4 R- _* M. W8 _2 A7 I
  3. <else /> other Framework) P6 E* x  h. S! {- v

  4. , ^; f3 \% I( l/ T3 C) ?; e
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    8 j; R0 S/ ~7 V9 _
  2. - b! {& k- @) [% W6 M8 A
  3. <else /> other Framework
    8 X+ k9 F: R) u/ P& P

  4. * ~& d/ G0 g: r/ d$ a
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP# G( _7 [, X& J8 W5 U
  2. # y" A" {. ?3 A! E
  3. <else /> other Framework
    ) h, D6 |9 f3 ?' K/ J3 q
  4. & d8 F  P6 U( F, I6 p
  5. </if>
复制代码

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

  1. eq 等于(==)4 X9 _0 P5 d2 v5 T$ W' l, t0 F6 M

  2. : u; q  L8 N7 H: {  `
  3. neq 不等于(!=)
    & ^0 E/ g, s4 T  D
  4. ; H* t) i4 c9 T
  5. gt 大于(>)
    1 U* K/ \! A* e3 H: X6 @+ |9 [5 d

  6. , j4 }1 M! q; E3 _' b4 o
  7. egt 大于等于(>=)
    2 X0 V5 L# |* Z( S! Z3 G
  8. ! M" F/ |. G( o4 g, f2 F$ R3 M- H
  9. lt 小于(<)' _2 N9 m7 h$ T3 o

  10. $ x2 d. P% H, M" W0 X$ w
  11. elt 小于等于(<=)/ i  M8 z* J. a1 F5 U- Y

  12.   E5 ~# m' F. u- i
  13. heq 恒等于(===)6 k7 n% y5 A; m1 j# s  H
  14. 5 Z. d+ M$ X% s3 {3 Z
  15. nheq 不恒等于(!==)
复制代码


5 ]4 {  a" B7 e: X2 ^* a


. N5 P8 H7 w( d3 F) e7 Z; T注意$ B$ ?3 d% [, z
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
6 w5 t1 x8 B& f, F提示6 ]3 U* @. T- x' E) @% }
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。& M4 Q- g3 _6 k: v- N
如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。' f/ I, V1 D$ C2 v
3 T0 u3 k8 L; p/ e8 T0 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 02:08 , Processed in 0.115762 second(s), 20 queries .

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