视图 - 模板里渲染模板

  • 作者:KK

  • 发表日期:2018.1.5


要点速读

  1. 在模板里可以执行echo $this->render('xxx')来渲染另一个同级目录的模板并进行输出。

  2. 加第2个参数(数组)就可以传递变量给另一个被渲染的模板,它也能像普通模板一样输出变量。

  3. 渲染路径默认从当前控制器对应的模板目录开始,如果要渲染其它目录的模板可以用../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')不解释。