Yii 渲染函数的区别

Posted

技术标签:

【中文标题】Yii 渲染函数的区别【英文标题】:Yii difference between rendering functions 【发布时间】:2012-05-09 22:11:15 【问题描述】:

我有时会被这三种渲染方法搞得一团糟:

Controller::render() Controller::renderPartial() Controller::renderFile()

请你解释一下。谢谢!

【问题讨论】:

@Paystey 很棒的编辑 ^_^ 谢谢 【参考方案1】:

render() 通常用于呈现与用户在您的应用程序中看到的“页面”相对应的视图。它首先渲染您指定的视图,然后渲染当前控制器操作的布局(如果适用),将第一次渲染的结果放入布局中。然后执行输出处理(此时意味着自动插入任何必要的<script>标签并更新动态内容)并最终输出结果。

renderPartial() 通常用于呈现页面的“片段”。与render() 的主要区别在于此方法将渲染结果放置在布局中。默认情况下它也不执行输出处理,但您可以使用$processOutput 参数覆盖此行为。

renderFile() 是一种低级方法,它完成繁重的渲染工作:它提取当前范围内的数据变量,然后运行视图代码。其他两种方法在内部调用此方法,但实际上您应该永远不需要自己调用它。如果这样做,请记住您需要传入 文件路径(不是视图路径)。

【讨论】:

【参考方案2】:

renderPartial() 对于在页面中显示 ssi 组件非常有用 - 即页眉、页脚、小部件等。

【讨论】:

【参考方案3】:

渲染文件

将使用设置的渲染引擎在给定文件上运行渲染方法。这在 Yii 中相当低级,仅在内部或控制台命令中真正使用。

部分渲染

这采用给定的别名并使用所有局部变量(例如当前运行的控制器和模块以及别名定义)将其转换为文件路径。然后它几乎只使用渲染文件。

渲染

这是渲染部分的组合,使我们的生活更轻松。它将在当前活动的控制器或已定义的控制器上渲染布局,渲染其中的所有内容,处理渲染缓存,并处理客户端脚本的输出。

希望能解决这个问题。

【讨论】:

我想提请注意 renderFile() 的“控制台命令”位。这对我来说是救命稻草。

以上是关于Yii 渲染函数的区别的主要内容,如果未能解决你的问题,请参考以下文章

Yii2 使用查询参数渲染 url

Yii:如何自定义 CHtml 渲染的视图?

Yii 2 在选项卡内容中渲染页面

Yii 只渲染一页没有布局

Yii2 - 在视图的 index.php 中渲染 _search.php 文件

无法从控制器渲染 php 变量以在 yii2 中查看