我有时会被三种渲染方法弄乱:
Controller::render()
Controller::renderPartial()
Controller::renderFile()
请你解释一下。谢谢!
答案 0 :(得分:28)
render()
通常用于呈现与用户在应用程序中看作“页面”的视图相对应的视图。它首先渲染您指定的视图,然后渲染当前控制器操作的布局(如果适用),将第一个渲染的结果放入布局中。然后它执行输出处理(此时意味着自动插入任何必要的<script>
标签并更新动态内容),最后输出结果。
renderPartial()
通常用于呈现网页的“片段”。与render()
的主要区别在于此方法不将渲染的结果放在布局中。默认情况下,它也不执行输出处理,但您可以使用$processOutput
参数覆盖此行为。
renderFile()
是一种执行渲染工作的低级方法:它提取当前作用域中的数据变量,然后运行视图代码。另外两种方法在内部称之为,但你几乎不需要自己调用它。如果您这样做,请记住您需要传入文件路径(而不是视图路径)。
答案 1 :(得分:5)
渲染文件:
将使用set渲染引擎在给定文件上运行渲染方法。这在Yii中相当低,只在内部或控制台命令中使用。
渲染部分:
这将获取给定的别名,并使用所有本地变量(如当前运行的控制器和模块以及别名定义)将其转换为文件路径。然后它几乎只使用渲染文件。
<强>渲染强>:
这是渲染部分的组合,使我们的生活更轻松。它将在当前活动的控制器或已定义的控制器上呈现布局,呈现其中的所有内容,处理渲染的缓存,并处理客户端脚本的输出。
希望能够解决它。
答案 2 :(得分:2)
renderPartial()对于在页面中显示ssi组件非常有用 - 即页眉,页脚,小部件等。