Лучший способ включить нижний колонтитул, заголовок и боковое меню в Symfony - PullRequest
2 голосов
/ 06 декабря 2010

В настоящее время в моем приложении Symfony я создал заголовок модуля, а затем компонент заголовка для обработки моего раздела заголовка в шаблонах, то же самое для нижнего колонтитула,

Это лучший способ?

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

Ответы [ 2 ]

2 голосов
/ 06 декабря 2010

Частично, вероятно, лучший путь.

Но слоты действительно полезны, если то, что вы хотите добавить в макет, присутствует только для некоторых действий, а не для всех.

Вы сказалиВы создали модуль для верхнего и нижнего колонтитула.Я предпочитаю просто создавать частичное в папке шаблонов приложений для каждого из них.

/apps
  /yourapp
    /templates
      _header.php
      _footer.php
      layout.php

Боковая панель категорий звучит как компонент, но от того, как вы ее реализуете, зависит, хотите ли вы, чтобы один и тот же компонент отображался на каждой страницеили иметь возможность контролировать, какая боковая панель отображается (если она вообще есть) на разных страницах.

Если вы хотите, чтобы один и тот же компонент на каждой странице, просто включите компонент (с include_component) в файл layout.php.Если вы хотите больше контроля, включите компонент из в шаблон каждого из действий, которые вы хотите, чтобы он был показан.

Более сложное решение для боковой панели будет включать его из вашего макета, если конкретный атрибутзадавать.Итак, у вас actions.class.php:

public function preExecute()
{
  $this->getRequest()->setAttribute('show_categories_sidebar', true);
}

Тогда у тебя layout.php:

<?php if ($sf_request->hasAttribute('show_categories_sidebar')): ?>
  <div id="sidebar">
    <?php include_component('category', 'sidebar') ?>
  </div>
<?php endif; ?>
1 голос
/ 06 декабря 2010

Я обычно помещаю частичные или верхние колонтитулы или компоненты в модуль по умолчанию.Затем я включаю их в макеты через слоты, предоставляя другим действиям возможность отменять или отключать их.Таким образом, упрощенный макет может выглядеть следующим образом:

<body>
  <?php if (has_slot('header')): ?>
    <?php include_slot('header') ?>
  <?php else: ?>
    <?php include_component('default', 'header') ?>
  <?php endif ?>
  <?php echo $sf_content ?>
  <?php if (has_slot('footer')): ?>
    <?php include_slot('footer') ?>
  <?php else: ?>
    <?php include_partial('default/footer') ?>
  <?php endif ?>
</body>

Теперь у вас есть возможность переопределить верхний / нижний колонтитул для каждого действия / шаблона, а также полностью отключить их, установив для слота значение false.Аналогичный принципал можно использовать для бокового меню.

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