pokupo
@pokupo
Разработчик, архитектор, предприниматель

Как реализовать блочную струкутру проекта на Symfony?

Я недавно начал изучать Symfony 2, возможно чего-то принципиально не понял, прошу помочь в решении задачи:



Необходимо реализовать модульную загрузку проекта, т.е. меню, форма авторизации, лента новостей, список пользователей и прочие блоки на сайте. На сколько я понял, необходимо определить роутер и написать соответствующий обработчик в контролере, он выдаст данные для twig шаблона, который будет отображен пользователю. Но мне не ясно как объединить разные функциональные блоки с разными шаблонами и разными роутерами в один lauout, что бы собрать их все.



Знаю, что можно выполнять «наследование» шаблонов twig, но если я определяю свой шаблон как кусок базового layuot, при вызове роутера для этого шаблона, как будут загружаться другие шаблоны если мой контроллер вернет данные только для моего шаблона? Мне нужно максимально разделить блоки друг от друга, что бы они не зависели от других.



Сейчас мне нужно форму логина в систему из FOSUserBundle интегрировать с другими блоками сайта, создал дочерный бандл от FOSUserBundle, но не знаю куда идти дальше. Нашел бандл SonataBlock но не могу разобраться нужен ли он вообще в этом случае или нет. Прошу помочь тех, кто в этом силен.
  • Вопрос задан
  • 3657 просмотров
Решения вопроса 1
Inori
@Inori
У Twig есть функция render как раз для таких нужд
Пример:
{% render 'AcmeDemoBundle:User:login' %}

Symfony2 сделает запрос к UserController::loginAction(), который и будет отвечать за подготовку и рендер шаблона с формой логина.

Пример из реального проекта: github.com/KnpLabs/KnpBundles/blob/master/src/Knp/Bundle/KnpBundlesBundle/Resources/views/layout.html.twig#L35
github.com/KnpLabs/KnpBundles/blob/master/src/Knp/Bundle/KnpBundlesBundle/Controller/DeveloperController.php#L25-#L33
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы