0

是否可以在每个布局模板中以相同的方式显示类似全局区域的内容?即如果我有:

<?php echo $helper->renderArea('global.bottom', '.clearfix') ?>

在几个不同的布局文件中(pageSuccess.php、customPageSuccess.php、homePageSuccess.php 等Success.php)

每当我为其中一个更改此区域中的某些内容时,它们都会更改。可以说,我使用 pageSuccess.php 布局在任何页面中的该区域中添加了一个新区域和一个新的文本小部件,并且使用此全局区域的每个布局中都会显示更改。

是否可以?

4

1 回答 1

1

因此,您说您需要在某些模板中包含一些代码,这些代码将以完全相同的方式呈现这些模板。

我的建议是,使用插槽。例如,您有以下模板:helloSuccess.php 和 goodbyeSuccess.php,但在这两个模板中您都需要显示一些内容(比如说当前时间)。因此,您不想在网站的任何地方都显示它,但某些模板可能需要它。

你可以有一个 layout.php(主应用布局模板)看起来像这样:

<html>
<head>
{....}
</head>
<body>
  <div id="special_container">
    <?php if(has_slot("time")):?>
      <?php include_slot("time")?>
    <?php endif?>
  </div>
  <div class="container">
    <?php echo $sf_content ?>
  </div>
</body>
</html>

然后,每个想要在“special_container”中渲染某些东西的模板都应该实现插槽“time”。回到这个例子,helloSuccess.php 和 goodbyeSuccess.php 在他们的代码中应该有这样的内容:

<?php slot('time') ?>
  <!-- custom sidebar code for the current template-->
  <h1>Time </h1>
  <p>name:  <?php echo date("D M d, Y G:i a"); ?></p>
<?php end_slot() ?>

有关插槽、组件、部分的更多信息,我真的会推荐这个链接:在视图层内部,它的 symfony 1.2 但对于 2.0 之前的几乎每个 symfony 版本来说都是一样的

于 2011-11-17T02:58:38.840 回答