我们在《Jsnpp框架模板变量》一文里面介绍了基本的模板变量,实际上,我们还会使用一些较为复杂的模板变量,即复合变量,这一篇我们就来详细介绍模板的复合变量。
我们在前面的教程里面介绍的模板变量是形如“{$name}”这样的模板变量,我们称这种形式的模板变量为基础变量,或者简单起见我们可以直接称之为“模板变量”,当然这里所指的模板变量并不能包含所有Jsnpp模板的模板变量,还有复合模板变量。
为了方便描述,我们现在约定,模板的基础变量,在后面的讲解中,我们称之为“模板变量”。而复合模板变量,我们简单地称之为“复合变量”。这样的描述约定,一方面可以简化名词,另一方面也可以方便您阅读和理解。
我们先来看一个复合变量的例子,如下面的标签代码:
{$list.data}
我们来看一下这个标签的组成,很显然,这个标签的组成跟模板变量的组成是有区别的,主要区别就在于,标签名称之间有一个点号,除了这个区别,其他结构跟前面教程里面介绍过的模板变量是一样的。
现在我们来看这个点号,实际上点号前后各是一个标签名,这个例子里面,点号前面的是“list”,点号后面的是“data”。
我们可以这么理解,“data”是“list”下面的一个子项。
更进一步来说,点号前后的标签之间的关系是父子关系,如果在“data”下面还有一个data的子项,例如“first”的话,并且我们需要输出“first”这个孙项,那么我们可以用下面的标签:
{$list.data.first}
看上面的标签代码您应该知道了,如果标签下面有子项,并且我们需要输出这个子项,或者说使用这个子项,那么可以用一个点来连接父子标签。
我们在前面的教程里面也学习并知道了,要在HTML页面里面使用模板变量,首先需要在PHP代码里面对这个模板变量赋值,这篇介绍的符合变量也一样。
但是给模板的复合变量赋值,是通过数组来实现的,例如下面的代码:
$this->view->assign('list', ['data' => '内容'])->display();有了以上代码就可以在HTML页面里面使用“{$list.data}”模板标签来获取“内容”两个字了。