gpt4 book ai didi

symfony - 自定义实体类的 JMSSerializerBundle Yaml 配置

转载 作者:行者123 更新时间:2023-12-02 13:40:30 25 4
gpt4 key购买 nike

我的 symfony2 项目中有一个 bundle 和框架之外的自定义实体。

我需要将 json 数据设置到该实体中,但无法将正确的配置应用于用户 yaml 文件。

应用程序/config/config.yml

jms_serializer:
metadata:
auto_detection: true
directories:
CORE:
namespace_prefix: "Core\Domain\Model"
path: "%kernel.root_dir%/Resources/serializer/CORE"

应用程序/资源/序列化器/CORE/Model.Product.yml

Core\Domain\Model\Product\Product:
properties:
id:
type: integer
objectId:
type: string
name:
type: string ...

这个 bundle 可能无法与 bundle 之外的实体一起正常工作?

我总是看到错误消息:您必须为 Core\Domain\Model\Product\Product::$id 定义类型。

我认为 JMSSerializerBundle 不读取 yaml 文件,因为使用注释可以正常工作。

有什么想法吗?

谢谢。

最佳答案

在您的 app/config/config.yml 中,请务必使用 \\ 作为命名空间分隔符,而不是 \:

jms_serializer:
metadata:
auto_detection: true
directories:
CORE:
namespace_prefix: "Core\\Domain\\Model"
path: "%kernel.root_dir%/Resources/serializer/CORE"

否则反斜杠将被视为以下字母的转义字符。

编辑:还要确保正确命名 JMS 序列化器配置。对于类Core\Domain\Model\Product\Product,您需要在配置的指定path内有一个Product.Product.yml文件。在您的示例中,您的文件名为 Model.Product.yml

因此,要获取一般实体的序列化器配置文件名:

  1. 从类名中删除配置中定义的命名空间
  2. 将命名空间分隔符 \ 替换为 .
  3. 附加.yml并将文件放入配置中定义的path文件夹

关于symfony - 自定义实体类的 JMSSerializerBundle Yaml 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30998880/

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