1

私はブログサイトを持っています。唯一のエンティティは、Blogposts と Users です。これらのブログ投稿を、モバイル用の json GET で表示できるようにしたいと考えています。しかし、HTML (およびもちろん CSS) を返すだけのデフォルトの GET ルートも必要です。

もちろん、私は周りを見回しましたが、ウェブサイトを JSON のみを出力する以外に、FOSRestBundle をもう少し深く掘り下げた素晴らしいチュートリアルを見つけることができないようです (もちろん、私はひどく間違ったことをしている可能性があります)。

現在、ルートを設定すると、デフォルト ルートとして JSON しか取得できません。.jsonURLで行う場合は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出力が得られます。しかし、に行く場合にのみ 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 に答える