2013-04-17 83 views
6

我正在嘗試關注如何使用Symfony2設置一個良好的REST API Will Durand's tutorial。不過,我在一開始我沒有,因爲我得到這個錯誤:控制器必須返回一個響應,數組給出

The controller must return a response (Array(welcome => Welcome to my API) given). 

一些基本的東西肯定有問題我非常基本的配置。我爲fos_rest配置嘗試了不同的設置,但configuration reference沒有提供很大幫助,因爲我不太瞭解單個設置的功能。

我的設置:

//config.yml 
sensio_framework_extra: 
    view: 
     annotations: true 

fos_rest: ~ 

//Controller 
<?php 

namespace Acme\Bundle\ApiBundle\Controller; 

use FOS\RestBundle\Controller\Annotations as Rest; 

class DefaultController 
{ 
    /** 
    * @Rest\View 
    */ 
    public function indexAction() 
    { 
     return array(
      'welcome' => 'Welcome to my API' 
     ); 
    } 
} 

我的API應根據接受頭返回XML奧德JSON。永遠不會有html輸出。

回答

28

我修好了! 的配置需要看起來像這樣:

sensio_framework_extra: 
    view: 
     annotations: false 

fos_rest: 
    view: 
     view_response_listener: true 
+1

我認爲,應該在官方的文檔中添加(請與他們聯繫,並提交) 。因爲它今天不存在。恭喜! –

+1

只需提交來自日誌的相關錯誤消息,以便人們可以通過谷歌找到這個:'PHP message:PHP致命錯誤:未捕獲異常'RuntimeException'帶消息'您需要在使用FOSRestBundle View Response偵聽器時禁用SensioFrameworkExtraBundle中的視圖註釋「。 in /home/jupiter/symfony/dimsym/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ConfigurationCheckPass.php:27' –

4

我花了一天的搜索工作配置:

sensio_framework_extra: 
    view: { annotations: false } 
    router: { annotations: true } 

fos_rest: 
    param_fetcher_listener: true 
    body_listener: true 
    format_listener: true 
    view: 
     view_response_listener: 'force' 
     formats: 
      xml: true 
      json : true 
     templating_formats: 
      html: true 
     force_redirects: 
      html: true 
     failed_validation: HTTP_BAD_REQUEST 
     default_engine: twig 
    routing_loader: 
     default_format: json 
相關問題