2015-03-10 4 views
4

Я хочу знать, что лучше всего подходит для рендеринга контроллера в веточке или использования макроса. Например, у нас есть страница, где мы публикуем сообщение с его комментариями.Twig: render controller vs macro

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

Какой из них лучше всего подходит? Я использую symfony2

ответ

2

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

Вот почему:

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

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

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

0

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

Смежные вопросы