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