2011-08-16 9 views
1

Symfony2で経路のURLに変数を追加できるようにします。Symfony2 - routing.ymlでのクエリを使ったルーティング

_blogList: 
pattern: /blog/{page}?{query} 
defaults: { _controller: TestBundle:Blog:view ,page:1, query: NULL } 

www.mysymfonyproject.com/blog/1?style=fresh&rpp=5 

クエリとURLの生成に関するドキュメントの会談を、私は希望私は、これはアプリで動的なコンテンツのためにある?:

$router->generate('blog', array('page' => 2, 'category' => 'Symfony')); 
// /blog/2?category=Symfony 

理解して何から何がこれだろう

しかし、明らかにそれは動作しません。

これはYAMLを使用して行うことができますか?あるいは、config.ymlをPHPに切り替える必要がありますか?

ありがとうございました。

答えて

1

あなたは(それが動作するはずです)このルートを試すことができます:

blog: 
    pattern: /blog/{page} 
    defaults: { _controller: TestBundle:Blog:view ,page:1, style:fresh, rpp:5 } 


その後 /blog/1?style=fresh&rpp=5のようなURLを生成するために、使用:

$router->generate('blog', array('page' => 1, 'style' => 'fresh', 'rpp' => 5)); 

または

$router->generate('blog', array('page' => 1)); 
+0

おそらく私は何かが分かりませんが、コントローラからURLを生成したくないので、ルートからコントローラに設定された変数を渡したいと思っています。あるいは私はここで後方に考えていますか? – BobFlemming

+3

Routeで指定された属性だけがアクションパラメータとして渡されます。他のすべては '$ request-> query-> get( 'queryVariableName')' –

+0

でアクセス可能です。GETについては考えていません。ありがとう! – BobFlemming

3

あなたはすべてのクエリパラメータ(isn '実行して、実際のルートパターンのT部分):ルートと一致して、あなたのコントローラのアクション内部

$this->getRequest()->query->get('parameter_name') 

これにはいくつかのショートカットがある($ this-> getParameter()や$ this-> getQuery()など)がありますが、どこからでもドキュメントが見つかりませんでした。

関連する問題