0

是否可以auto_detection用于某些捆绑包,同时通过指定第三方模型来覆盖它们的位置directories

在过去的几天里,我一直在使用JMSSerializerBundle试图理解它并让它与个人项目一起使用,它看起来没有任何方法可以使用auto_detection以及指定directories第三方元数据。

如果我写我的FOSUserBundle Model.User.yml序列化数据,例如:

FOS\UserBundle\Model\User:
    access_type: property
    exclusion_policy: ALL
    xml_root_name: user
    properties:
        username:
            type:     string
            expose:   true

并将其放在指定的目录中,whileauto_detection设置为 true,如下所示:

jms_serializer:
  metadata:
    debug: true
    file_cache:
      dir: "%kernel.cache_dir%/serializer"
    auto_detection: true
    directories:
      FOSUserBundle:
        namespace_prefix: FOS\UserBundle
        path: "@MyBundle/config/serializer/fosuser"

未提取序列化元数据。

但是,如果我将相同的元数据文件放在FOS/UserBundle/Resources/config/serializer下(在供应商包中)并将配置更改为:

jms_serializer:
  metadata:
    debug: true
    file_cache:
      dir: "%kernel.cache_dir%/serializer"
    auto_detection: true
    #directories:
    #  FOSUserBundle:
    #    namespace_prefix: FOS\UserBundle
    #    path: "@MyBundle/config/serializer/fosuser"

序列化元数据被读取并正确应用。

4

2 回答 2

2

目录路径中有错字,应该是:

jms_serializer:
  metadata:
    debug: true
    file_cache:
      dir: "%kernel.cache_dir%/serializer"
    auto_detection: true
    directories:
      FOSUserBundle:
        namespace_prefix: FOS\UserBundle
        path: "@MyBundle/Resources/config/serializer/fosuser"

带我深入FileLocator了解为什么文件没有被加载。

于 2013-09-14T23:06:37.357 回答
1

修改供应商目录中的文件是一种非常糟糕的做法。您正在寻找的答案在这里:

JMSSerializerBundle。无法控制第三方元数据

虽然有点晚了:p

于 2015-07-04T18:18:09.613 回答