2012-05-13 48 views
11

我想使用Symfony2和FOSRestBundle來提出一個REST框架,我失敗了。無法使用FOSRestBundle

我也做了以下內容:

我DEPS文件

[FOSRest] 
    git=git://github.com/FriendsOfSymfony/FOSRest.git 
    target=fos/FOS/Rest 

[FOSRestBundle] 
    git=git://github.com/FriendsOfSymfony/FOSRestBundle.git 
    target=bundles/FOS/RestBundle 

[JMSSerializerBundle] 
    git=git://github.com/schmittjoh/JMSSerializerBundle.git 
    target=bundles/JMS/SerializerBundle 

在我的應用程序/ config.yml

fos_rest: 
    view: 
     formats: 
      rss: true 
      xml: false 
     templating_formats: 
      html: true 
     force_redirects: 
      html: true 
     failed_validation: HTTP_BAD_REQUEST 
     default_engine: twig 


sensio_framework_extra: 
    view: 
     annotations: false 

在我的控制器:

namespace Rest\WebServiceBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use FOS\RestBundle\View\View; 


class DefaultController extends Controller 
{ 

    public function indexAction($name) 
    { 


    $view = View::create() 
      ->setStatusCode(200) 
      ->setData($name); 
     return $this->get('fos_rest.view_handler')->handle($view); 


    } 
} 

當我去到網址:http://local.symfony.com/web/app_dev.php/hello/test

我得到:

Unable to find template "". 
500 Internal Server Error - InvalidArgumentException 
2 linked Exceptions: Twig_Error_Loader » Twig_Error_Loader 

文檔還是很迷惑我,我無法繼續。我想要的只是能夠將一組數據傳遞給控制器​​並獲取JSON格式。有人可以幫忙嗎?

+4

我也遇到了麻煩。看起來相當簡單的任務似乎相當混亂。你有沒有碰運氣? – greg

回答

17

formats部分config.yml您必須啓用json格式並禁用其他格式並將默認_format值設置爲路由中的json。 e.g

# app/config/config.yml 
fos_rest: 
    view: 
     formats: 
      json: true 
      rss: false # removing them will also work 
      xml: false 
#....... 

#bundle/routing.yml 
route_name: 
    pattern: /route 
    defaults: { _controller: Bundle:Controller:Method, _format:json } 

或者,控制器可以做

$view->setFormat('json'); 

也會檢出文檔中給出的示例鏈接。

+3

它也適用於我,但只有當我使用數組作爲數據時,如果我想輸出一個對象呢? – alex88

+1

不適用於較新的版本。更新的答案:http://stackoverflow.com/a/18035437/842697。評論是非常interesants。 –