JMS 序列化程序,添加事件订阅者时出错
JMS serializer, error during adding event subscriber
我尝试添加 EventSubscriber,但是当我在服务中注册订阅者时出现错误:"undefined offset 0"
//services.yml
AppBundle\Subscribers\NoticePostSerializeSubscriber:
tags:
- { name: kernel.event_subscriber, event: serializer.post_serialize}
订阅者
<?php
namespace AppBundle\Subscribers;
use JMS\Serializer\EventDispatcher\ObjectEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class NoticePostSerializeSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(
array(
'event' => 'serializer.post_serialize',
'method' => 'onPostSerialize',
'class' => 'AppBundle\Entity\Notice', // if no class, subscribe to every serialization
'format' => 'json', // optional format
'priority' => 0, // optional priority
),
);
}
public function onPostSerialize(ObjectEvent $event)
{
}
}
如果我删除服务中的定义,错误就会消失。
如果我的 NoticePostSerializerSubscriber 实现
\JMS\Serializer\EventDispatcher\EventSubscriberInterface
我有以下错误:
Service "AppBundle\Subscribers\NoticePostSerializeSubscriber" must
implement interface
"Symfony\Component\EventDispatcher\EventSubscriberInterface".
但是如果我将界面更改为
Symfony\Component\EventDispatcher\EventSubscriberInterface
我有上面提到的错误
你注册的方式不对。
对于事件订阅者,无需在您的 services.yml 中配置 "event",因为这是在 getSubscribedEvents()
中处理的,因此删除您的 "event" 属性.
Jms 序列化程序事件订阅者不是 Symfony 内核事件订阅者,因此请将您的服务标签更改为:
tags:
- { name: jms_serializer.event_subscriber }
接下来,您的 class 必须实现 JMS\Serializer\EventDispatcher\EventSubscriberInterface
,而不是 Symfony 的 EventSubscriberInterface
我尝试添加 EventSubscriber,但是当我在服务中注册订阅者时出现错误:"undefined offset 0"
//services.yml
AppBundle\Subscribers\NoticePostSerializeSubscriber:
tags:
- { name: kernel.event_subscriber, event: serializer.post_serialize}
订阅者
<?php
namespace AppBundle\Subscribers;
use JMS\Serializer\EventDispatcher\ObjectEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class NoticePostSerializeSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(
array(
'event' => 'serializer.post_serialize',
'method' => 'onPostSerialize',
'class' => 'AppBundle\Entity\Notice', // if no class, subscribe to every serialization
'format' => 'json', // optional format
'priority' => 0, // optional priority
),
);
}
public function onPostSerialize(ObjectEvent $event)
{
}
}
如果我删除服务中的定义,错误就会消失。
如果我的 NoticePostSerializerSubscriber 实现
\JMS\Serializer\EventDispatcher\EventSubscriberInterface
我有以下错误:
Service "AppBundle\Subscribers\NoticePostSerializeSubscriber" must implement interface "Symfony\Component\EventDispatcher\EventSubscriberInterface".
但是如果我将界面更改为
Symfony\Component\EventDispatcher\EventSubscriberInterface
我有上面提到的错误
你注册的方式不对。
对于事件订阅者,无需在您的 services.yml 中配置 "event",因为这是在 getSubscribedEvents()
中处理的,因此删除您的 "event" 属性.
Jms 序列化程序事件订阅者不是 Symfony 内核事件订阅者,因此请将您的服务标签更改为:
tags:
- { name: jms_serializer.event_subscriber }
接下来,您的 class 必须实现 JMS\Serializer\EventDispatcher\EventSubscriberInterface
,而不是 Symfony 的 EventSubscriberInterface