2017-04-18 65 views
-2

我具有以下配置:一个类中FOSRestBundle不设置_format参数

/** 
* @Rest\View(serializerGroups={"o-all-getCDashboard"}) 
*/ 
public function cgetAction($_format) 
{ 
    $handler = $this->getHandler(); 
    die(dump($_format)); 

    return $handler->getAll(); 
} 

extends FOSRestController implements ClassResourceInterface

总是转储null

fos_rest: 
    view: 
     view_response_listener: 'force' 
     formats: 
      json: true 
      xml: true 
      html: false 
    body_listener: 
     decoders: 
      json: fos_rest.decoder.json 
      xml: fos_rest.decoder.xml 
    body_converter: 
     enabled: true 
    format_listener: 
     enabled: true 
     rules: 
      - { path: '^/api', priorities: ['xml', 'json'], fallback_format: xml, prefer_extension: false } 
    param_fetcher_listener: force 
    routing_loader: 
#  default_format: xml 
     include_format: false 
    serializer: 
     serialize_null: true 

和下面的控制器。如果我重新启用default_format: xml我得到的总是xml,尽管我发送了Accept标题。它出什么问题了?为什么format_listener不工作?

回答

1

您使用uncorrected format_listeners配置。 尝试使用我的配置是这样的:

fos_rest: 
    body_listener: true 
    param_fetcher_listener: true 
    view: 
     view_response_listener: 'force' 

     formats: 
      jsonp: true 
      json: true 
      xml: false 
      rss: false 
     mime_types: 
      json: ['application/json', 'application/x-json'] 
      jpg: ['image/jpeg'] 
      png: ['image/png'] 
     jsonp_handler: ~ 
    routing_loader: 
     default_format: json 
     include_format: false 
    format_listener: 
     rules: 
      - { path: /api, priorities: [ json, jsonp ], fallback_format: json, prefer_extension: true } 
    exception: 
     enabled: true 

加法只是设置部分格式和fallback_format自己。 在我的控制器我使用

use FOS\RestBundle\Controller\Annotations as Rest; 
use FOS\RestBundle\Controller\Annotations\RouteResource; 

/** 
* @RouteResource("someName") 
*/ 
class myController extends FOSRestController implements ClassResourceInterface { 

    /** 
    * @param Request $request 
    * @Rest\Post("/someLink") 
    */ 
    public function insertLinkAction(Request $request) {} 
} 

我希望能帮助你。