0

我有一个 Symfony 1.4 项目。如您所知,模板布局是在应用程序的模板文件夹中独立定义的,然后普遍应用于所有其他模板。我的布局非常简单,如下所示:

<div id = "header">
</div>
<div id = "content">
<?php echo $sf_content ; ?>
</div>
<div id = "footer">
</div>

$sf_content,正如大多数 symfonians 所知道的,本质上是为当前正在查看的任何网页吐出模板。如果我的标题需要一些特定数据,例如注销、徽标等,我只需将其包含在标题中即可。这很好用,因为它本质上是静态的。我面临的挑战是如何在页眉标签中包含动态且特定于页面的数据,因为 UI 要求我将其包含在其中。

例如,我的一个网页需要在下拉/选择菜单中加载用户特定数据。这是动态的,范围可以从 0 到 100,并且特定于每个用户。创建这个下拉菜单不是问题,我已经完成了这部分。挑战在于,鉴于我的数据成为 $sf_content 的一部分并且在我的内容 div 中吐出,我如何将其加载到标题中。

有没有办法将我的 $sf_content 的特定部分移动到标题 div 中?

4

2 回答 2

1

在您的 actions.php 中:

$this->getResponse()->setSlot('someData', 'and its value');

在 layout.php 中:

<div id="header">
<?php echo get_slot('someData'); ?>
</div>
<div id="content">
<?php echo $sf_content ; ?>
</div>
<div id="footer">
</div>
于 2013-01-02T02:49:54.673 回答
0

插槽为此工作。它们可以像上面的第一个答案一样在操作中设置,也可以在模板本身中定义它们。这就是我在为布局定义动态数据的地方所做的。

在您的示例中:

<div id="header">
  <?php include_slot('some slot name')?>
</div>
<div id="content">
<?php echo $sf_content() ?>
</div>
<div id="footer">
</div>

在模板中,您将定义以下内容:

<?php slot('some slot name')?>
  //your code goes here
<?php end_slot() ?>

当布局被渲染时,Symfony 会将代码放在slot()和之间end_slot(),你使用include_slot().

为方便起见,我创建了一个包含在所有模板中的全局部分,它定义了整个应用程序中使用的各种公共插槽。有关插槽及其用法的更多信息,请点击此处

于 2013-01-02T17:18:05.353 回答