【发布时间】:2015-03-16 23:04:54
【问题描述】:
我的配置是
jms_serializer:
metadata:
auto_detection: true
directories:
NameOfBundle:
namespace_prefix: ""
path: "@VendorNameOfBundle/Resources/config/serializer"
我的名为 Entity.Project.yml 的 YML 文件包含
Vendor\NameOfBundle\Entity\Project:
exclusion_policy: ALL
properties:
id:
expose: true
我正在从控制器中加载序列化程序
$serializer = SerializerBuilder::create()
->configureListeners(function(EventDispatcher $dispatcher) {
$dispatcher->addSubscriber(new ProjectSubscriber($this->container));
})
->addDefaultListeners()
->build();
这完全忽略了我的 YML 文件并公开了项目中的所有字段。我已经清除了缓存。
但如果我在没有自定义订阅者的情况下使用它,那么排除项会起作用
$serializer = $this->get("jms_serializer");
即使显式添加目录也不起作用
$serializer = SerializerBuilder::create()
->configureListeners(function(EventDispatcher $dispatcher) {
$dispatcher->addSubscriber(new ProjectSubscriber($this->container));
})
->addDefaultListeners()
->addMetadataDir(realpath($this->get('kernel')->getRootDir()."/../") . '/src/Vendor/NameOfBundle/Resources/config/serializer')
->build();
文档不清楚应该如何完善这条路径。上述方法不会报错,但不会拉入 YML 文件。下面的方法报错,说目录不存在;
$serializer = SerializerBuilder::create()
->configureListeners(function(EventDispatcher $dispatcher) {
$dispatcher->addSubscriber(new ProjectSubscriber($this->container));
})
->addDefaultListeners()
->addMetadataDir('@VendorNameOfBundle/Resources/config/serializer')
->build();
如何让 JMS 序列化程序查看我的 YML 文件以排除字段并同时使用订阅者?
【问题讨论】:
标签: symfony serialization yaml jmsserializerbundle