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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-2 16:02:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以使用if标签来定义复杂的条件判断,例如:
; U7 ~# K+ l0 q: Z+ K+ y# W6 K4 e
  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
    4 w( T1 ?$ z- Q) {4 b

  2. / q2 f  ?. \# X6 D" I6 R  o
  3. <elseif condition="$name eq 2" />value2
    , i; g# {* L4 [" H' e

  4. " v% s" l6 S4 C/ k# i+ m
  5. <else /> value3
    ( `. Q- S* I7 R$ n, [( i

  6. ( N1 \7 y3 d- n  v) g
  7. </if>
复制代码
在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
+ Z& X# x% V  n/ C
  1. <if condition="$id < 5 "> value1% N4 {8 Z6 |/ c) @
  2. . ]0 X5 T. D& K8 a% B
  3. <else /> value2
    ( @+ D# Y  @8 x: [/ A' {

  4. 8 I) _4 p* c1 g# ~1 Y
  5. </if>
复制代码
必须改成:: o" P2 M+ i: d$ ?9 S' e  R
  1. <if condition="$id lt 5 "> value1
    8 y* M+ p: c. h% p
  2. 9 D- w: X. o" X2 I
  3. <else /> value2' c5 |, Y: h7 _; Z) n

  4.   q& b, H. a- S+ ~
  5. </if>
复制代码
除此之外,我们可以在condition属性里面使用php代码,例如:
" E4 t; f% ?% U7 v) K& T3 v, I
  1. <if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP5 |$ W/ d# h, |6 X5 ~+ _9 O6 X

  2. 8 j1 H! v7 ?. s9 m
  3. <else /> other Framework) R: f3 ]  n4 O6 M8 e) v; S* @7 P

  4. ! Q8 ?4 k  w2 ?# ]! K
  5. </if>
复制代码

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

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

  1. <if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
    / Z5 H3 m- B, q* C

  2. $ Q3 H+ K1 c: \) L" N5 q- X' V+ E7 s- U
  3. <else /> other Framework0 }5 H* U; k% ], T/ i! d

  4. , I( o5 k! x- j; p' s1 O; t" g
  5. </if>
复制代码

或者知道user变量是对象

  1. <if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
      m& _# J: _# q+ ?* q

  2. ; A- y6 g9 d! e' _" O
  3. <else /> other Framework1 U9 \5 b; j3 F) h$ M' V; H
  4. 0 [% u5 k, x) i+ m5 l- k
  5. </if>
复制代码

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

  1. eq 等于(==)
    ( T: Z- i# y$ E0 R4 D  {

  2. : G% g- `5 M% ]2 s
  3. neq 不等于(!=)' N! K( e' E/ ]0 n

  4. - b. p/ s1 J" _0 t+ q, `% G
  5. gt 大于(>)
    1 W2 w5 H+ c; z) r

  6. 1 e6 D7 j4 w/ b. g
  7. egt 大于等于(>=)' L1 K' {% I# A  o! V  v& V( q4 h5 G
  8. ; S( Z# d- N$ d2 J- y( w7 m) G
  9. lt 小于(<)) O8 f% b2 v2 i. f. X" x
  10. * }. j8 |+ x8 g4 `% V) d6 ~
  11. elt 小于等于(<=)
    9 _! M1 p1 Q% r1 l$ y
  12. % H; M& f7 `4 S9 Z' Z: x% D
  13. heq 恒等于(===)
    8 f, m3 q! v) x1 D3 s7 c. h4 p

  14. 3 Y' S: F* i& a
  15. nheq 不恒等于(!==)
复制代码

7 N: w* i# S/ }- T2 U( a( \7 k6 R

5 @1 \) U6 E- j7 A2 X6 L( S
注意
: e: h" y+ Y$ I* L, \condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。
! I4 L+ _. j" l! Q( |( u; |提示/ |/ Q$ j6 I$ Z4 P, u! v
在判断输出系列标签中,应尽可能使用更为简洁的比较标签和 switch 标签等判断标签。
" w2 \1 i9 C# U" v- L' n( Q如果 ThinkPHP 提供的各判断标签仍不能满足特殊的需求,可以直接使用原生 PHP 代码或者 PHP 标签来满足需求。- E* h( {" M) ^0 m/ z) u. G

: j0 U+ z7 H# U- m) |- S7 b. ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 07:55 , Processed in 0.108840 second(s), 21 queries .

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