gpt4 book ai didi

symfony - JMS Serializer 忽略了我的 YML 实体排除项

转载 作者:行者123 更新时间:2023-12-04 12:47:22 24 4
gpt4 key购买 nike

我的配置是

jms_serializer:
metadata:
auto_detection: true
directories:
NameOfBundle:
namespace_prefix: ""
path: "@VendorNameOfBundle/Resources/config/serializer"

我的 YML 文件名为 Entity.Project.yml包含
Vendor\NameOfBundle\Entity\Project:
exclusion_policy: ALL
properties:
id:
expose: true

我正在像这样从 Controller 中加载序列化程序
$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 文件以排除字段并使用订阅服务器?

最佳答案

正如我从 documentation 看到的你需要设置你的 Yaml 文件:

有必要配置这些文件所在的元数据目录:

$serializer =
JMS\Serializer\SerializerBuilder::create()
->addMetadataDir($someDir)
->build();

有关更多信息,请阅读手册。

关于symfony - JMS Serializer 忽略了我的 YML 实体排除项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28016213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com