/ / Symfony - Перетворення даних перед відправкою на перегляд - php, json, symfony, doctrine2

Symfony - Перетворення даних перед відправкою до перегляду - php, json, symfony, doctrine2

Привіт !

Я "хотів би перетворити дані, перш ніж надсилати їх у подання. Перегляд - це відповідь 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.