FOSRestBundle を使用する Symfony アプリケーションがあり、メインの config.yml でいくつかの設定が構成されています。
fos_rest:
service:
serializer: my.serializer
view_handler: my.viewHandler
view:
view_response_listener: false
failed_validation: 200
現在、新しいパブリック API バンドルを構築していますが、次の問題があります。ブラウザから API をテストすると、
Unable to find template "".
500 Internal Server Error - InvalidArgumentException
curlから動作します。ブラウザーが html コンテンツ タイプを要求するため失敗すると思いますが、テンプレートは必要ありません。次のように xml/json を返したいだけです。
return $this->get('fos_rest.view_handler')->handle(View::create(array('x' => 'y')));
私は更新された設定でこれを修正するために使用します:
fos_rest:
service:
serializer: my.serializer
view_handler: my.viewHandler
view:
view_response_listener: false
failed_validation: 200
format_listener:
default_priorities: [xml, json]
fallback_format: xml
しかし、その後、既存のアプリケーション (FOSRestBundle を使用する他のバンドル) でいくつかのアクションを壊しました。FOSRestBundle (またはその他のバンドル) の構成を公開 API バンドルのみに微調整する方法はありますか? 拡張機能で試しました:
$loader = new YmlFileLoader($container, new FileLocator(__DIR__.'/../
Resources/config'));
$loader->load('services.yml');
services.yml は次のとおりです。
fos_rest:
service:
view_handler: my.public.api.view_handler
format_listener:
default_priorities: [xml, json]
fallback_format: xml
しかし、私は得ました:
InvalidArgumentException: There is no extension able to load the
configuration for "fos_rest".