1

我有一个博客网站。唯一的实体是博客帖子和用户。我想通过手机的 json GET 使这些博文可见。但我也想要一个默认的 GET 路由,它只返回 HTML(当然还有 CSS)。

当然,我环顾四周,但除了使网站仅输出 JSON 之外,我似乎找不到更深入 FOSRestBundle 的好教程(但当然,我可能做错了可怕的事情)。

现在,当我设置路由时,我只能将 JSON 作为默认路由。我想.json在 URL 中获取 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. 我该怎么做?

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

4

1 回答 1

2

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

_welcome:
    pattern: /.{_format}
    defaults: { _controller: TestTestingBundle:Main:homepage }
于 2012-08-18T11:25:31.503 回答