小さなエラーですが、見つかりませんでした。 私はthe official docをフォローし、pre_serializeイベントでイベントリスナーを実装しようとしています。JMSシリアライザのイベントが機能していません
マイサービス宣言:
<service id="app.question_serializer_subscriber" class="AppBundle\Serializer\QuestionSerializerSubscriber">
<tag name="jms_serializer.event_subscriber"/>
</service>
私の加入者:
<?php
namespace AppBundle\Serializer;
use JMS\Serializer\EventDispatcher\EventSubscriberInterface;
use JMS\Serializer\EventDispatcher\ObjectEvent;
class QuestionSerializerSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(
array(
'event' => 'serializer.pre_serialize',
'method' => 'onPreSerialize',
)
);
}
public function onPreSerialize(ObjectEvent $event)
{
die('in event');
}
}
そして、私のコントローラ:
$question = $repo->findLastVersionByQuestionId((int) $questionId);
$serializer = SerializerBuilder::create()->build();
$context = new SerializationContext();
return new JsonResponse(json_decode(
$serializer->serialize(
$question,
'json',
$context
),
true
));
を、私は私のエンティティの質問はシリアル化されて表示された経路にアクセスしますが、 die('in event');
はなぜ表示されませんか?ドキュメントに関する
public static function getSubscribedEvents()
{
return array(
array(
'event' => 'serializer.pre_serialize',
'class' => 'FQCN_class_name',
'method' => 'onPreSerialize',
)
);
}
もう一つの違いされています
多分それは私のオブジェクトはDoctrineのエンティティ(issue 666またはPR 677)であるという事実と関係を持っている例として、クラス属性を追加すること
素晴らしいです!あなたの答えを受け入れたものとしてマークして、ユーザーがより良いソリューションを見つけられるようにします – Matteo