Ich habe eine Entität Acme\Bundle\Entity\Author
, die eine Eins-zu-viele-Beziehung zu Acme\Bundle\Entity\Article
hat und ich habe zwei JMS-Serializer-Ereignis-Abonnenten für beide Entitäten.JMS Serializer Event Subscriber Filtert Proxy-Klassen
Teilnehmer für Acme\Bundle\Entity\Author
;
acm.author_serialization_listener:
class: Acm\Bundle\Listener\AuthorSerializationListener
tags:
- { name: jms_serializer.event_subscriber }
class AuthorSerializationListener implements EventSubscriberInterface
{
/**
* @inheritdoc
*/
public static function getSubscribedEvents()
{
return array(
array('event' => 'serializer.pre_serialize', 'class' => 'Acme\Bundle\Entity\Author' 'method' => 'onPreSerialize'),
);
}
public function onPreSerialize(PreSerializeEvent $event)
{
if($event->getObject() instanceof Author) {
return;
}
}
}
Abonnent für Acme\Bundle\Entity\Article
;
acm.article_serialization_listener:
class: Acm\Bundle\Listener\ArticleSerializationListener
tags:
- { name: jms_serializer.event_subscriber }
class ArticleSerializationListener implements EventSubscriberInterface
{
/**
* @inheritdoc
*/
public static function getSubscribedEvents()
{
return array(
array('event' => 'serializer.pre_serialize', 'class' => 'Acme\Bundle\Entity\Article' 'method' => 'onPreSerialize'),
);
}
public function onPreSerialize(PreSerializeEvent $event)
{
if($event->getObject() instanceof Article) {
return;
}
}
}
Das Problem in der onPreSerialize
Funktion tritt auf, wenn Author
zusammen mit verwandten Article
s in der ArticleSerializationListener
Teilnehmerklasse Serialisierung, wo es Proxies \ __ CG __ \ Acme \ Bundle \ Entity \ statt Artikel spritzt von Acme \ Bundle \ Entity \ Artikel Entitäten, die dazu führen, dass die zugehörigen Entitäten Article
ausgeschlossen werden. Gibt es etwas, das ich falsch mache, oder gibt es einen Workaround dafür?
Ihre Lösung funktioniert überhaupt nicht, da der Serializer nicht einmal die Entitäten benötigt, die er benötigt, da er sie aus dem 'class'-Filter im' getSubscribedEvents' selbst filtert. Ich habe meine Frage bearbeitet, um für Sie klarer zu sein. Danke für die Syntaxkorrektur! – ssrp
Können Sie das Problem genauer beschreiben? – stepotronic