仅为应用程序中的特定包调整bundle配置

问题描述 投票:2回答:2

我有使用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 

但后来我在exising应用程序中破坏了一些操作(其他使用FOSRestBundle的bundle)。有没有办法只为我的公共APi包调整FOSRestBundle(或任何其他包)配置?我尝试使用Extension:

$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". 
rest symfony configuration bundle
2个回答
4
投票

当您通过composer安装软件包时,您需要手动将软件包添加到app / AppKernel.php:

public function registerBundles()
{
    $bundles = array(
        // ...
        new FOS\RestBundle\FOSRestBundle(),
        new JMS\SerializerBundle\JMSSerializerBundle(),
        // ...
    );
}

Here is more info.


0
投票

当我们使用symfony4 + rest api安装rest api包后检查bundle文件,如果fosrest bunfle没有退出则添加FOS \ RestBundle \ FOSRestBundle :: class => ['all'=> true]

© www.soinside.com 2019 - 2024. All rights reserved.