Serialization FOSRESTBundle:如何在控制器级别更改序列化程序MetadataDir
如何在控制器级别为FOSRestBundle使用的序列化程序指定元数据目录 我不能在Serialization FOSRESTBundle:如何在控制器级别更改序列化程序MetadataDir,serialization,symfony,fosrestbundle,jmsserializerbundle,Serialization,Symfony,Fosrestbundle,Jmsserializerbundle,如何在控制器级别为FOSRestBundle使用的序列化程序指定元数据目录 我不能在config.yml中设置它,因为在我的例子中,它取决于请求的路由 我已经看到,我可以使用以下代码 $serializer = JMS\Serializer\SerializerBuilder::create() ->addMetadataDir($someDir) ->build(); 但是,如何将其应用于已实例化的序列化程序(或如何替换它)?恐怕这是不可能的 调用时将目录设置为元
config.yml
中设置它,因为在我的例子中,它取决于请求的路由
我已经看到,我可以使用以下代码
$serializer = JMS\Serializer\SerializerBuilder::create()
->addMetadataDir($someDir)
->build();
但是,如何将其应用于已实例化的序列化程序(或如何替换它)?恐怕这是不可能的 调用时将目录设置为元数据驱动程序 即使由
序列化程序使用,它也可能不会帮助您,因为工厂与缓存目录无关。只有驱动程序才能使用目录
因此,您唯一的选择可能是创建一个新的Serializer
实例,并使用该实例而不是来自DI的实例
编辑:创建新的序列化程序
的工作方式与问题中的工作方式相同。然后,您的DI容器应该是具有方法set()
的实例,该方法允许您覆盖任何已注册的服务 谢谢你的回答。你能补充一下我如何用FOSRestBundle“创建一个新的序列化程序实例并使用它而不是来自DI的实例”吗?好的,我仍然不知道如何将此应用于FOSRestBundle,但我还是会接受你的回答。谢谢