12

Symfony2 と FOSRestBundle を使用して REST フレームワークを作成しようとしていますが、惨めに失敗しています。

私は次のことをしました:

私の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

私の apps/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);


    }
}

URL にアクセスすると: 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

1 に答える 1

18

formatsのセクションでは、config.ymljson 形式を有効にして他の形式を無効にし、デフォルト_format値をルートの json として設定する必要があります。例えば

# 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');

また、ドキュメントに記載されているリンクの例もチェックしてください。

于 2012-05-13T19:15:43.050 に答える