Symfony中的Partial和Slot有什么区别?

时间:2010-07-17 14:46:59

标签: symfony1 partial slot

部分 Slot 这两个概念对我来说似乎是一样的。这两个特性都将模板中的占位符替换为实际标记。

我应该何时使用部分,何时应该使用 Slot

4 个答案:

答案 0 :(得分:4)

插槽和部分之间的主要区别在于给定插槽的渲染位于特定模板中。相反,partial只是将模板包含在另一个模板中。

“基本上,一个插槽是一个占位符,您可以放入任何视图元素(在布局,模板或部分中)。填充此占位符就像设置变量一样填充代码全局存储在响应中,因此您可以在任何地方(在布局,模板或部分中)定义它。只需确保在包含它之前定义一个插槽,并记住布局在执行之后执行。模板(这是装饰过程),并在模板中调用它们时执行。“

使用每种方法的例子有:

  • 页面标题 - 可能会放在插槽中(或标题帮助器中),然后您将在布局中检查插槽是否已定义然后显示。
  • 补充工具栏 - 假设您有3个侧边栏“插槽”,那么您将有三个插槽,例如“sidebar-1”,“sidebar-2”和“sidebar-3”。然后在模板中定义插槽,如果需要,可以使用部分(甚至是组件)进行渲染。

我希望澄清一下。

答案 1 :(得分:3)

部分来自文件:

include_partial('thing', $params)_thing.php包含$ params的范围。

插槽不是文件,而是设置在模板/控制器中的其他位置:

slot('title', 'Home Page');
echo '<title>'.slot('title').'</title>'

答案 2 :(得分:2)

您需要知道的是Symfony备忘单 View. Partials, components, slots and component slots (PDF,45 KB)。

答案 3 :(得分:1)

您可以将插槽视为OO方法定义。您的布局定义了插槽。模板扩展布局并填充这些插槽(通过覆盖方法)。您还可以拥有插槽的默认内容,该插槽在未被覆盖时显示。

另一方面,偏见就像是作曲。它们是模板可以访问的可重用组件。它们大致相当于一个简单的include语句,但是你传入它使用的变量。

此页面在解释概念方面做得非常出色:http://www.symfony-project.org/book/1_2/07-Inside-the-View-Layer