我有使用 FOSRestBundle 的 Symfony 应用程序,并在 main 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
它适用于卷曲。我猜它失败了,因为浏览器要求 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 的捆绑包)。有没有办法只为我的公共 APi 包调整 FOSRestBundle(或任何其他包)配置?我试过扩展:
$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".