如何在控制器级别为FOSRestBundle指定的序列化程序指定元数据目录?
我无法在config.yml
中进行设置,因为在我的情况下,这取决于请求的路线。
我在JMSSerializer doc中看到我可以使用以下代码
$serializer = JMS\Serializer\SerializerBuilder::create()
->addMetadataDir($someDir)
->build();
但是如何将它应用于已经实例化的序列化器(或如何替换它)?
答案 0 :(得分:1)
我担心这是不可能的。
调用build()
in SerializerBuilder.php
时,目录设置为元数据驱动程序。
尽管Serializer
使用you can access the metadata factory它可能不会帮助你,因为工厂与缓存目录无关。只有驱动程序才能使用目录。
因此,唯一的选择可能是创建Serializer
的新实例并使用它而不是来自DI的实例。
编辑:创建新的Serializer
的方式与您的问题相同。然后你的DI容器应该是Container的实例,它具有方法set()
,允许您覆盖任何已注册的服务。