在Diem,Symfony cms的“全球”布局区域

时间:2011-11-11 07:29:54

标签: php symfony-1.4 diem

是否有可能像每个布局模板中显示的全局区域一样?即如果我有:

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

在几个不同的布局文件中(pageSuccess.php,customPageSuccess.php,homePageSuccess.php,etcSuccess.php)

每当我在这个区域中为其中一个改变某些东西时,它就会改变所有这些东西。假设我使用pageSuccess.php布局在任何页面中向此区域添加新区域和新文本窗口小部件,并使用此全局区域在每个布局中显示更改。

有可能吗?

1 个答案:

答案 0 :(得分: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() ?>

有关插槽,组件,部分的更多信息,我真的会推荐这个链接:Inside the View Layer它的symfony 1.2,但它几乎与2.0之前的每个symfony版本完全相同