2

コントローラレベルでFOSRestBundleで使用されるシリアライザのメタデータディレクトリを指定するにはどうすればよいですか?FOSRESTBundle:コントローラレベルでシリアライザメタデータを変更する方法

私はconfig.ymlに設定できません。私の場合はリクエストのルートに依存しているからです。

私はすでにインスタンス化シリアライザに次のコード

$serializer = JMS\Serializer\SerializerBuilder::create() 
    ->addMetadataDir($someDir) 
    ->build(); 

しかし、どのようにそれを適用する方法を使用することができることをJMSSerializer docで見てきた

(またはどのようにそれを交換しますか)?

答えて

1

これは可能ではありません。

build() in SerializerBuilder.phpを呼び出すと、ディレクトリがメタデータドライバに設定されます。

Serializerで使用されているyou can access the metadata factoryでも、工場はキャッシュディレクトリとは関係がないため、おそらくあなたを助けません。ドライバのみがディレクトリを操作します。

したがって、唯一のオプションは、Serializerの新しいインスタンスを作成し、それをDIの代わりに使用することです。

編集:新しいSerializerを作成することは、あなたの質問と同じ方法で動作します。 DIコンテナはContainerのインスタンスで、メソッドset()があり、登録済みのサービスをオーバーライドすることができます。

+0

答えをありがとう。答えを追加して*「シリアライザの新しいインスタンスを作成し、それをDIの代わりに使用する方法」*をFOSRestBundleと追加できますか? – marcv

+0

答えを更新します。 – martin

+0

OK、これをFOSRestBundleにどのように適用できるかはまだ分かりませんが、私はあなたの答えをとにかく受け入れます。ありがとう。 – marcv

関連する問題