Привіт !
Я "хотів би перетворити дані, перш ніж надсилати їх у подання. Перегляд - це відповідь json за допомогою FOSRestBundle.
Наприклад, у мене є продукт продукту з полемКатегорія, що є посиланням на суб'єкт Категорії. На виході я хотів би не відображати json з усією категорією, а лише лише з її полем ідентифікатора.
Звичайно, ви можете додатково обробити об'єкт у Контролері, щоб повернути лише певне поле з категорії, але ..
Я хотів запитати, чи є якесь "стандартне" рішення, як це зробити, можливо, використовуючи анотацію?
Дякую
Відповіді:
2 для відповіді № 1Я вважаю, що найкраща практика або стандартний спосіб досягти того, що ви хочете (фільтруючи / обробляючи дані сутності перед поверненням як JSON для перегляду), - це використовувати серіалізатор. Ви можете розглянути можливість використання Пакет серіалізаторів Symfony: http://symfony.com/doc/current/components/serializer.html або JMS-серіалізатор: http://jmsyst.com/libs/serializer.
Я сам рекомендую JMS по-перше, у нього дійсно хороша документація, визначення повністю контролюється за допомогою анотацій, а також продумана система подій та декілька функцій, які я можу перерахувати наступним чином:
- Виставити / виключити конкретні атрибути сутності.
- Створіть віртуальну властивість (атрибути) дляпісля перетворення в JSON. (Так, наприклад, якщо у вас є Entity Product з атрибутом Price, і ви хочете мати обчислене поле у виклику об’єкта JSON taxPrice, ви можете його досягти).
- Контроль доступу, хто може отримати доступ до яких атрибутів / об’єктів, класифікуючи атрибути до різних груп.
- Події попередньої серіалізації та після серіалізації, щоб ви могли ще більше налаштувати дані.
Я можу сказати, що Серіалайзер так добре працює з Forest Bundle, що як тільки ви звикнете, навряд чи можете написати свій проект по-іншому: D.