模板语法详解
发布时间: 2021年5月9日 下午9:15 作者: JPWRT 访问量: 1102

在前面的主题教程里面我们介绍了模板标签,一般来说,模板标签是用于直接输出内容的,但我们在制作模板的时候,经常会遇到一些逻辑判断或者循环输出等需求,这就需要用到模板的语法。这一篇我们介绍的就是怎么使用模板语法。

JPWRT的模板语法实际上是Jsnpp框架自带的,下面我们来详细介绍。

判断语法

判断语法有三个,分别是“if”、“empty”、“notempty”,我们分别来介绍:

if

“if”语法是用于判断条件是否满足的,我们先看下面的示例:

{if($logged == false)}
请登录
{endif}

上面的示例代码,我们使用了if模板语句来进行判断,判断的对象是变量“$logged”,这个变量的值是“true”的话,那么说明已经登录了,如果是“false”的话,那么就没有登录。这里的代码意思是如果用户没有登录,那么就会显示“请登录”这几个字。

if语句里面还可以使用“else”,我们看下面的代码:

{if($logged == false)}
请登录
{else}
已经登录
{endif}

在上面代码中,我们添加了“else”,意思很容易理解,就是用if语句对“$logged”进行判断,是“false”的话就显示“请登录”,否则显示“已经登录”。

这里要特别提一下的是代码最后一行,最后一行是“{endif}”,这是if语句的结束,这个结束标签是不能省略的,必须要在if判断结束的地方写上这个结束标签。

empty

“empty”是用来判断是否为空的,我们可以判断某个输出是否为空,如果为空那么可以不输出。看下面的示例代码:

{empty $slide}
没有幻灯片
{endempty}

上面代码使用“empty”来对变量“$slide”进行判断,如果“$slide”是空的话,那么输出“没有幻灯片”这几个字。

empty语句也是可以使用else语句的,这个跟上面的if语句类似,用法也相同。

同样地,在empty语句的结束位置,需要有结束标签“{endempty}”,这个结束标签是不能省略的。

notempty

“notempty”是用于判断不为空,实际上“notempty”正好跟“empty”是相反的判断,使用方法也是一样,我们看下面的示例:

{notempty $slide}
幻灯输出代码
{endnotempty}

在上面示例代码里面,我们对变量“$slide”进行判断,如果不为空的话,那么就输出“幻灯输出代码”这几个字,这里是演示标签的使用,主要是为了说明标签语法怎么使用,所以只是用几个字来代替具体的输出内容的代码。

在最后的结束标签也是必须的。

我们通过上面几个判断标签的示例可以发现,结束标签实际上是有规律的,就是在原标签的前面加上“end”。例如原标签是“if”,那么就是“endif”。

循环语法

我们上面介绍了判断语法,下面介绍循环语法,循环语法我们在《JPWRT模板里面的循环标签》一文里面有涉及到,如下面的代码:

{each $item in $slide}
<div>{$item.name}</div>
{endeach}

上面代码就是使用“each”来循环输出“$slide”的每一个项,“$item”表示“$slide”的一个项,“{$item.name}”表示某个项的名称。

这里也有一个结束标签“{endeach}”,这个标签也是不能省略的。

循环标签实际上还可以有更多的属性,看下面的例子:

{each $item in $slide from 0 to 5}
<div>{$item.name}</div>
{endeach}

我们可以比较这两处代码,后面的“each”语句里面多了“from 0 to 5”,这表示从第一条记录开始显示,一共显示5条记录,第6条记录开始将被忽略不显示。

组合应用

我们学习了判断语法和循环语法,当某个循环输出的内容需要先进行判断的话,我们可以这样写:

{notempty $slide}
{each $item in $slide from 0 to 5}
<div>{$item.name}</div>
{endeach}
{endnotempty}
上面的代码是一个组合应用的例子,首先用“notempty”对“$slide”进行判断,是否为空,如果不为空的话,那么使用“each”语句循环输出“$slide”的内容。
出错
提交成功!
评论已经提交。
我们已经收到您的反馈!
/index/like.html
/index/dislike.html
/index/postpassword.html
JPWRT
自豪地采用 Jpwrt