是否有可能像每个布局模板中显示的全局区域一样?即如果我有:
<?php echo $helper->renderArea('global.bottom', '.clearfix') ?>
在几个不同的布局文件中(pageSuccess.php,customPageSuccess.php,homePageSuccess.php,etcSuccess.php)
每当我在这个区域中为其中一个改变某些东西时,它就会改变所有这些东西。假设我使用pageSuccess.php布局在任何页面中向此区域添加新区域和新文本窗口小部件,并使用此全局区域在每个布局中显示更改。
有可能吗?
答案 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版本完全相同