Например, у меня есть две сущности: основная (родительская) сущность (например, User
) и зависимая сущность (Post
). Я хочу сериализовать объект User
с помощью сериализатора JMS с дополнительной информацией о дате его первой публикации. Дата публикации, хранящаяся в БД, - это временная метка int, но я хочу сериализовать ее с помощью моего помощника (просто службы), который преобразует int в sting с некоторым форматированием.
Попытка создать virtual_property
с методом в классе сущности, но не удалось внедрить мой помощник в класс сущности. Единственный способ решить эту проблему для меня - сериализовать себя в контроллер:
public function someAction()
{
$serializedUser = $this->serializeEntity($user);
}
public function serializeEntity(User $user)
{
// JMS serialization
$user = $this->get('jms_serializer')->serialize($user, 'array');
if ($user->getPosts()->count()) {
$post = $user->getPosts()->first();
$user['first_post_date'] = $this->get('my_helper_service')->dateFormat($post->getDate());
}
return $user;
}
NB: этот пример синтетический, в реальном мире у меня есть более сложные методы, а не только средство форматирования даты. Но основная идея осталась прежней.
Я чувствую, что должен быть лучший способ сделать это.