FOSRestBundle似乎无法弄清楚如何使JSON和HTML一起工作

时间:2012-08-17 21:08:36

标签: json rest symfony routing

我有一个博客网站。唯一的实体是Blogposts和用户。我想用json GETs for mobiles看看这些博文。但我还想要一个默认的GET路由,只返回HTML(和CSS ofcourse)。

当然我环顾四周,但我似乎找不到一个比FOSRestBundle更深入的教程,除了让网站只输出JSON(但当然,我可能做的事情非常糟糕)。

现在,当我设置路线时,我只能将JSON作为默认路线。我希望在URL中执行.json时获取JSON输出,在默认路由时使用HTML。这就是我的路线:

_welcome:
    pattern: /
    defaults: { _controller: TestTestingBundle:Main:homepage, _format: json }

这是MainController.php:

<?php

namespace Test\TestingBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use FOS\RestBundle\View\View;  

class MainController extends Controller
{
    public function homepageAction()
    {
        $latestposts = $this->getLatestBlogs();
        $posts = $this->trimContent($latestposts);

        $view = View::create(array('lastblogs' => $posts))
                    ->setStatusCode(200)
                    ->setEngine('twig')
                    ->setTemplate(new TemplateReference('TestTestingBundle', 'Index', 'index'))
                    ->setData($latestposts);

        return $this->get('fos_rest.view_handler')->handle($view); 
    }
}

截至目前,当我访问localhost/Symfony/web/app_dev.php/时,我获得了JSON输出。但是如果我去localhost/Symfony/web/app_dev.php/.json,我只想获得JSON。我该怎么做?

如果您需要更多代码,请发表评论。

1 个答案:

答案 0 :(得分:2)

如果您希望能够通过路线更改格式,请为其添加格式的占位符:

_welcome:
    pattern: /.{_format}
    defaults: { _controller: TestTestingBundle:Main:homepage }