繁体   English   中英

Symfony 3-声明并使用控制器以外的串行器

[英]Symfony 3 - Declare and use the serializer other than in a controller

我想在控制器之外的其他地方使用Symfony序列化服务。 根据doc',它应该在构造函数中声明。 我使用EntityManagerInterface进行了测试。

我有这个:

use Doctrine\ORM\EntityManager;

//...

public function __construct(EntityManagerInterface $em)
    {
        $this->em = $em;

    }

//...

$nb = $this->em->getRepository('PagesBundle:UserCas')->getIfUserCas($mail);

我希望我可以使用Symfony序列化器使用类似的方法做同样的事情:

$user = $this->get('serializer')->serialize($user, 'json');

但是我无法在构造函数中正确声明它以便以后使用。

谁能帮我 ? 谢谢

根据Symfony文档,您可以创建一个序列化程序对象以对代码任何部分的任何内容进行序列化。 无需将其作为服务注入。

use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;

$encoders = [new XmlEncoder(), new JsonEncoder()]; 
$normalizers = [new ObjectNormalizer()];

$serializer = new Serializer($normalizers, $encoders);
use Doctrine\ORM\EntityManager;
use Symfony\Component\Serializer\SerializerInterface;

//...
private $serializer;

public function __construct(
         EntityManagerInterface $em,
         SerializerInterface $serializer)
    {
        $this->em = $em;
        $this->serializer = $serializer;
    }

//...

$nb = $this->em->getRepository('PagesBundle:UserCas')->getIfUserCas($mail);
$this->serializer->serialize($user, 'json');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM