是否可以对某些捆绑包使用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"
读取并正确应用序列化元数据。
答案 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