Twig / Symfony: отображение расширенных данных. Когда использовать расширения, подзапросы, экранные объекты и т. Д. - PullRequest
0 голосов
/ 29 апреля 2020

Представьте себе представление администраторов о профилях пользователей, например, в интернет-магазине, в котором одновременно отображается, например, 20 пользователей.

У вас есть некоторые свойства, которые легко доступны из сущности пользователя, но у вас также есть некоторые более сложные такая информация, как, например, информация о платеже, где должна отображаться дополнительная информация в зависимости от способа оплаты (платеж с помощью кредитной карты должен отображать XXX-последние четыре цифры, платеж с помощью Paypal должен отображать Paypal lo go et c). Платежи должны быть подключаемыми , поэтому не нужно переключать регистр.

Это оставляет множество вариантов:

1) Один большой массив / экранный объект: в контроллере Загрузите пользователей. L oop над пользователями. Фабричный платежный сервис для каждого способа оплаты пользователей, должен отображать метод оплаты, определяющий c контент, и добавлять его в некоторый массив или «экранный объект». Плюсы: Twig очень прост, так как он просто oop поверх данных. Минусы: Вы должны создать большой набор данных в своем контроллере и определить «экранный объект» или не выполнять автозаполнение индексов массива.

2) Немного похоже на 1, но вместо Собирая весь набор данных в контроллере, вы создаете итерацию, которая выполняет факторинг сервисов по пути. Плюсы: меньше используемой памяти. Минусы: более сложный.

3) Используйте расширения. В Controller загрузите пользователей и отправьте ветке. В ветке используйте расширение для фабрики некоторого платежного сервиса и сделайте так, чтобы оно отображало дополнительную информацию. Плюсы: контроллер и веточка довольно просты. Минусы: Расширение используется только на этой одной странице ветки, а в системе со многими контроллерами количество расширений увеличивается.

4) Использовать подзапросы: создать действие для отображения информации о платеже для пользователя. , Основная ветка вызывает это действие для каждого пользователя для отображения информации о платеже. Плюсы: простой контроллер и веточка. Минусы: крайне неэффективно.

5) другое?

Довольно просто найти руководство по , как выполнить эти операции в ветке, но мне трудно выбрать когда использовать их.

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

Итак какие-либо комментарии?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...