我有一个博客网站。唯一的实体是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。我该怎么做?
如果您需要更多代码,请发表评论。
答案 0 :(得分:2)
如果您希望能够通过路线更改格式,请为其添加格式的占位符:
_welcome:
pattern: /.{_format}
defaults: { _controller: TestTestingBundle:Main:homepage }