迅睿 CMS 模板里的条件判断:if 与 switch 的写法差异

· 迅睿CMS · 阅读 14
摘要

迅睿的模板语法接近原生 PHP,但又有自己的约束,写惯了 PHP 的人反而容易出错。基本 if{if $status == 1} 已发布 {else if $status == 2}

迅睿的模板语法接近原生 PHP,但又有自己的约束,写惯了 PHP 的人反而容易出错。

基本 if

{if $status == 1}
  <span class="on">已发布</span>
{else if $status == 2}
  <span class="wait">待审核</span>
{else}
  <span class="off">草稿</span>
{/if}

注意是 {else if} 不是 {elseif},两个词的中间必须有空格,写成连写会编译失败。

多分支:switch

{switch $type}
{case 1}图文{break}
{case 2}视频{break}
{default}其他
{/switch}

{break} 不能省,否则会一直往下穿透输出所有分支。这是模板 switch 和 PHP switch 一致的地方,但很多人以为模板会自动跳出。

三目运算

{$count > 0 ? '有评论' : '暂无'}

短表达式可以,太长的嵌套三目不要写,模板里没有语法检查,出错只会得到一个空白。

常见判断陷阱

写法问题
{if $a = 1}赋值不是比较,永远为真
{if $a == '1 '}多了空格,比较失败
{if $arr.0}数组为空时报未定义下标
{if $a && $b}模板里要用 and 或确保两边都是布尔

调试建议

判断不生效时,先把条件拆开单独输出:{$status},确认值本身对不对。多数所谓“逻辑问题”,其实是变量名拼写错了。