2013-04-17 4 views
6

Я пытаюсь следовать Will Durand's tutorial о том, как настроить хороший REST API с помощью Symfony2. Однако я не сработал с ошибкой:Контроллер должен вернуть ответ, массив задан

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

Я думаю, он должен быть добавлен в официальных документах (пожалуйста, свяжитесь с ними и представить его) , Потому что сегодня этого не существует. Congrats! –

+1

Просто отправьте связанное сообщение об ошибке из журналов, чтобы пользователи могли найти это через google: 'PHP message: PHP Fatal error: Uncaught exception 'RuntimeException' с сообщением 'Вам нужно отключить аннотации представления в SensioFrameworkExtraBundle при использовании прослушивателя FOSRestBundle View Response «. в /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 
Смежные вопросы