2013-04-17 14 views
6

Sto cercando di seguire Will Durand's tutorial su come impostare una buona API REST con Symfony2. Comunque io sto riuscendo in fin dall'inizio come ottengo questo errore:Il controller deve restituire una risposta, array dato

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

Qualcosa di base devono essere sbagliato con la mia configurazione di base. Ho provato diverse impostazioni per la configurazione fos_rest, ma il configuration reference non fornisce molto utile in quanto non capisco veramente quali siano le singole impostazioni.

La mia configurazione:

//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' 
     ); 
    } 
} 

mio API dovrebbe restituire oder XML JSON in base all'intestazione accettare. Non ci sarà mai un output html.

risposta

28

L'ho risolto! Il config deve assomigliare a questo:

sensio_framework_extra: 
    view: 
     annotations: false 

fos_rest: 
    view: 
     view_response_listener: true 
+1

penso, va aggiunto nella documentazione ufficiale (si prega di contattare loro e presentarla) . Perché non esiste oggi. Congratulazioni! –

+1

Basta inviare il messaggio di errore correlato dai registri, in modo che le persone possano trovarlo tramite google: 'Messaggio PHP: PHP Errore irreversibile: eccezione non rilevata 'RuntimeException' con messaggio 'È necessario disabilitare le annotazioni della vista in SensioFrameworkExtraBundle quando si utilizza il listener di risposta a vista FOSRestBundle .' in /home/jupiter/symfony/dimsym/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/DependencyInjection/Compiler/ConfigurationCheckPass.php: 27' –

4

ho trascorrere una giornata per la ricerca configurazione di lavoro:

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 
Problemi correlati