JMS Serializer Bundle忽略实体映射

时间:2014-12-14 22:18:51

标签: php symfony jmsserializerbundle

我在Entity.Project.yml

中有My/NamedBundle/Resources/config/serializer/Entity.Project.yml个文件
My\NamedBundle\Entity\Project:
    exclusion_policy: ALL
    properties:
        id:
            exclude: true
            type: integer

这完全被忽略,序列化期间所有属性都被暴露。我错过了什么?

这部分的文档似乎缺乏对文件使用的命名方案或yml文件本身的内容没有实际的例子。

我已经清除缓存100次,试图让它工作。

$project = $repo->find(1);
$serializer = SerializerBuilder::create()->build();
$json = $serializer->serialize($project, 'json');

更新到容器序列化程序会导致错误

$serializer = $this->get("jms_serializer")
    ->configureListeners(function(EventDispatcher $dispatcher) {
        $dispatcher->addSubscriber(new MySubscriber($this->container));
    })
    ->addDefaultListeners()
    ->build();
  

尝试调用方法" configureListeners"在课堂上#34; JMS \ Serializer \ Serializer"

1 个答案:

答案 0 :(得分:0)

你正在使用带有Symfony的JMS Serializer Bundle,对吗?因为您可以避免每次手动创建构建器并只使用该服务:

$this->get('jms_serializer')->serialize($project, 'json');

如果您仍想手动执行此操作,请在创建序列化程序时尝试指定YML元数据目录。即使您的各个模型文件指向实体的完整路径,序列化程序仍然不知道该目录的位置。注释不需要这样,因为您已经在实体中。

http://jmsyst.com/libs/serializer/master/configuration

$serializer =
    JMS\Serializer\SerializerBuilder::create()
        ->addMetadataDir('My/NamedBundle/Resources/config/serializer')
        ->build();
相关问题