我在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"
答案 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();