我相信这是一个小错误,但我找不到它。 我正在尝试关注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');
不显示?
也许这是与事实,我的对象是一个学说实体(issue 666或PR 677)
太棒了!将您的答案标记为已接受,以便用户更好地找到解决方案 – Matteo