Twig: контроллер рендера против макроса

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

  • С одной стороны, мы можем загрузить комментарий в контроллер, который показывает сообщение, и передать его в качестве аргумента макросу ветки, чтобы отобразить список комментариев.
  • с другой стороны, мы можем создать контроллер, который принимает сообщение в качестве аргумента и отображает ветку, которая показывает сообщение

Какой из них лучший подход? я использую symfony2

4

Решение

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

Вот почему:

Передавая комментарии с постом в шаблон Twig, все инкапсулируется и выглядит логичным при просмотре шаблона (как разработчик). Этот конкретный шаблон Twig обрабатывает все макеты для этой страницы, и, поскольку список комментариев связан с содержимым, логично, что шаблон просто перебирает комментарии и использует макрос для отображения каждого элемента. Контроллер также должен быть простым, поскольку он просто запрашивает в базе данных комментарии, а затем передает их Twig. Еще одним преимуществом является то, что макрос также может быть легко повторно использован на других страницах. Несмотря на то, что контроллер также можно использовать повторно, он, вероятно, будет не таким простым.

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

Один из основных вариантов использования, когда было бы лучше передать сообщение в качестве аргумента отдельному контроллеру, был бы, если вы хотите показывать комментарии только определенным пользователям. Это позволило бы контроллеру определить, разрешено ли пользователю просматривать комментарии, а затем вернуть их в шаблон Twig и отобразить их, если это так. Хотя Twig теоретически может сделать это, кажется, лучше хранить это в контроллере.

2

Другие решения

Лучше использовать TwigExtension, определить функцию, которая выбирает комментарии.
Также есть некоторые посты множество проблем производительности рендеринга контроллера …

0

По вопросам рекламы [email protected]