JMSSerializerBundle混合自动检测和显式目录?

时间:2013-09-13 23:33:51

标签: php symfony serialization jmsserializerbundle

是否可以对某些捆绑包使用auto_detection,同时通过为其指定directories来覆盖第三方模型的位置?

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

如果我写了FOSUserBundle directories序列化数据,例如:

Model.User.yml

并将其放在指定的目录中,而FOS\UserBundle\Model\User: access_type: property exclusion_policy: ALL xml_root_name: user properties: username: type: string expose: true 设置为true,如下所示:

auto_detection

未拾取序列化元数据。

但是,如果我将相同的元数据文件放在 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"

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

2 个答案:

答案 0 :(得分: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以了解文件未加载的原因。

答案 1 :(得分:1)

修改vendor目录中的文件是一种非常糟糕的做法。你要找的是这里的答案:

JMSSerializerBundle. no control over third party meta data

有点晚了:p