Представьте себе представление администраторов о профилях пользователей, например, в интернет-магазине, в котором одновременно отображается, например, 20 пользователей.
У вас есть некоторые свойства, которые легко доступны из сущности пользователя, но у вас также есть некоторые более сложные такая информация, как, например, информация о платеже, где должна отображаться дополнительная информация в зависимости от способа оплаты (платеж с помощью кредитной карты должен отображать XXX-последние четыре цифры, платеж с помощью Paypal должен отображать Paypal lo go et c). Платежи должны быть подключаемыми , поэтому не нужно переключать регистр.
Это оставляет множество вариантов:
1) Один большой массив / экранный объект: в контроллере Загрузите пользователей. L oop над пользователями. Фабричный платежный сервис для каждого способа оплаты пользователей, должен отображать метод оплаты, определяющий c контент, и добавлять его в некоторый массив или «экранный объект». Плюсы: Twig очень прост, так как он просто oop поверх данных. Минусы: Вы должны создать большой набор данных в своем контроллере и определить «экранный объект» или не выполнять автозаполнение индексов массива.
2) Немного похоже на 1, но вместо Собирая весь набор данных в контроллере, вы создаете итерацию, которая выполняет факторинг сервисов по пути. Плюсы: меньше используемой памяти. Минусы: более сложный.
3) Используйте расширения. В Controller загрузите пользователей и отправьте ветке. В ветке используйте расширение для фабрики некоторого платежного сервиса и сделайте так, чтобы оно отображало дополнительную информацию. Плюсы: контроллер и веточка довольно просты. Минусы: Расширение используется только на этой одной странице ветки, а в системе со многими контроллерами количество расширений увеличивается.
4) Использовать подзапросы: создать действие для отображения информации о платеже для пользователя. , Основная ветка вызывает это действие для каждого пользователя для отображения информации о платеже. Плюсы: простой контроллер и веточка. Минусы: крайне неэффективно.
5) другое?
Довольно просто найти руководство по , как выполнить эти операции в ветке, но мне трудно выбрать когда использовать их.
Я знаю, что этот вопрос немного абстрактный и код не включен, но большинство примеров по этим темам настолько просты, что не дают понимания вопроса.
Итак какие-либо комментарии?