Я создаю простое приложение, используя Symfony.Макет страницы состоит из основного тела с левой и правой боковыми панелями.Боковые панели содержат несколько модулей, которые настраиваются пользователем.
Symfony предоставляет слоты, которые кажутся правильным способом заполнения боковых панелей:
layout.php
<div id="left_sidebar">
<?php if (has_slot('left_sidebar')): ?>
<ul>
<?php include_slot('left_sidebar') ?>
</ul>
<?php else: ?>
<!-- default sidebar code -->
<?php endif; ?>
</div>
Для заполнения слотов я пробовал использовать фильтр.Проблема в том, что некоторые модули на боковых панелях зависят от того, что происходит в действиях (обновления категорий и т. Д.).Таким образом, они должны быть сгенерированы после того, как действие завершено.
msBootstrapFilter
class msBootstrapFilter extends sfFilter
{
public function execute($filterChain)
{
// Generating the sidebars at this point is TOO early
// as the content of some sidebars depends on the actions
// Execute next filter
$filterChain->execute();
// Generate the sidebars after running through all the code
// This is TOO LATE, the layout has been rendered
$this->generateSidebars();
}
}
Я не хочу добавлять вызов "run sidebar" к каждому действию, поскольку это кажется негибким.
Что такоелучшая точка в потоке событий Symfony для генерации содержимого боковой панели?Есть ли подходящее событие, к которому я могу подключиться?