我的代码:
Services.yml
acme_api.event.jwt_created_listener:
class: Acme\DemoBundle\EventListener\JWTCreatedListener
arguments: [ @doctrine.orm.entity_manager, @serializer ]
tags:
- { name: kernel.event_listener, event: lexik_jwt_authentication.on_jwt_created, method: onJWTCreated }
的Acme \ DemoBundle \事件监听\ JWTCreatedListener
namespace Acme\DemoBundle\EventListener;
class JWTCreatedListener {
public function __construct(\Doctrine\ORM\EntityManager $em, Symfony\Component\Serializer\
Serializer $serializer) {
$this->em = $em;
$this->serializer = $serializer;
}
public function onJWTCreated(\Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent $event) {
$data = $event->getData();
$songs = $this->em->getRepository('AcmeDemoBundle:Favsong')->findByUser($user);
$data['songs'] = $this->serializer->serialize($songs, 'json');
$event->setData($data);
}
}
我只是尝试(没有成功)使用序列化编码器将教条对象编码为json。我觉得在宣布服务时我可能会错过一些观点。另外我想知道在参数yml部分使用的可用选项的记录位置,因为我总是从示例中复制,并尝试使用@serializer进行猜测。我想我错过了一些官方的SF2文件。
答案 0 :(得分:1)
你很可能在参数类型提示前面缺少前导反斜杠(\
)。所以而不是:
Symfony\Component\Serializer\Serializer $serializer
做的:
\Symfony\Component\Serializer\Serializer $serializer
这是否解决了这个问题?