Как заполнить содержимое боковой панели в макете Symfony? - PullRequest
2 голосов
/ 22 ноября 2010

Я создаю простое приложение, используя 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 для генерации содержимого боковой панели?Есть ли подходящее событие, к которому я могу подключиться?

1 Ответ

3 голосов
/ 22 ноября 2010

Вы можете использовать компонент? Который в основном представляет собой слот с каким-то действием прилагается к нему. В своем действии вы можете делать все, что нужно вашей логике, и воспроизводить ее так же, как описано выше, но с большей логикой.

Из руководства :

Компонент похож на действие, кроме это намного быстрее Логика компонент хранится в классе наследование от sfComponents, расположенных в action / components.class.php файл. Его презентация хранится в частично. Методы sfComponents начало класса со слова execute, так же, как действия, и они могут пройти переменные к их представлению аналог таким же образом, что действия могут передавать переменные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...