JMS Serializer добавляет группы по некоторому условиюPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 JMS Serializer добавляет группы по некоторому условию

Сообщение Anonymous »

У меня есть уведомление об объекте, и когда мой объект содержит какое-либо условие, я хочу добавить дополнительные группы для сериализатора, я создаю событие seriesizer.pre_serialize для уведомления и после условия проверки добавляю дополнительные группы в сериализованный контекст, но в ответ он не работает. Пример. Я хочу добавить некоторые вложенные в мое уведомление, это будет какой-то другой объект, пример вопроса, и у этого объекта есть несколько групп, и после его установки, когда я создаю контекст SerializationContext::create() все работает, но когда я пытаюсь добавить дополнительную группу в сериализатор.pre_serialize это не работает

это моя сущность

Код: Выделить всё

class Notifications
{
use TraitTimestampable;

const GROUP_POST_NOTIFICATION = 'post_notifications';
const GROUP_GET_NOTIFICATIONS = 'get_notifications';

/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @Annotation\Groups({
*     "get_notifications"
* })
*/
private $id;

/**
* @var object
*
* @Annotation\Groups({
*     "get_notifications"
* })
*/
private $providerEntity;
и еще один объект, который я добавляю в событие

Код: Выделить всё

class Questions implements NotificationInterface
{
use TraitTimestampable;
const GROUP_POST = 'post_question';
const GROUP_GET = 'get_question';

/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @Annotation\Groups({
*     "get_question"
* })
*/
private $id;

/**
* @return array
*/
public static function getGetGroup()
{
return [self::GROUP_GET];
}
но в ответ у меня

Код: Выделить всё

public function onPreSerializeNotifications(PreSerializeEvent $event)
{
/** @var Notifications $notifications*/
$notifications = $event->getObject();
$provider = $notifications->getProvider(); //this is Questions::class
$this->providerEntity = $this->entityManager->getRepository($provider)
->findOneBy(['id' => $notifications->getProviderId()]);
$notifications->setProviderEntity($this->providerEntity);

$attr = $event->getContext()->attributes;
$groups = array_merge($attr->all()['groups'], $provider::getGetGroup());
$attr->set('groups', $groups);
}
но у меня в ответ

Код: Выделить всё

"notifications": [
{
"id": 2,
"provider_entity": {}
}
]
почему?

Подробнее здесь: https://stackoverflow.com/questions/495 ... -condition
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»