视图 - 模板里渲染模板 ¶
作者:KK
发表日期:2018.1.5
要点速读 ¶
在模板里可以执行
echo $this->render('xxx')
来渲染另一个同级目录的模板并进行输出。加第2个参数(数组)就可以传递变量给另一个被渲染的模板,它也能像普通模板一样输出变量。
渲染路径默认从当前控制器对应的模板目录开始,如果要渲染其它目录的模板可以用
../common/menu
带父目录的路径来描述。
基本输出 ¶
项目里总有那么一部分模板会慢慢变得很大很多 HTML 和 PHP 嵌套混杂在里面,这时候就可以把一些独立的内容块,特别是与其他页面公共的内容块包装开去了。
比如对应 site 控制器吧,在 views/site 目录下再加一个menu.php
写些模板内容,然后在原来输出菜单的地方将菜单代码替换成echo $this->render('menu')
就可以读取同一目录下的菜单模板并输出了。
带变量输出 ¶
menu 模板其实可以像普通模板一样echo $username
这样输出变量,可是这个变量从哪里来呢?那就是在渲染时像下面代码这样传就行了:
echo $this->render('menu', [
'username' => $username,
'更多变量' => $更多变量
说白了就是跟控制器输出模板一样玩法。
其实还可以渲染其它目录的模板 ¶
echo $this->render('../common/menu')
不解释。