是否有可能在每个布局模板中以相同的方式显示类似全局区域的东西?例如,如果我有:
<?php echo $helper->renderArea('global.bottom', '.clearfix') ?>
在几个不同的布局文件(pagessuccess .php, custompagessuccess .php, homepagessuccess .php, etcSuccess.php)
当我在这个区域为其中一个做了一些改变时,所有的都改变了。比方说,我使用pagessuccess .php布局在任何页面的这个区域中添加了一个新的Zone和一个新的Text小部件,并且使用这个全局区域在每个布局中显示更改。
有可能吗?
所以你说你需要在一些模板中有一些代码,这些模板将以完全相同的方式呈现。
我的建议是,使用插槽。例如,你有这样的模板:helloSuccess.php和goodbyessuccess .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和goodbyessuccess .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,但几乎每个symfony 2.0之前的版本都是一样的