2011-09-07 16 views
16

さて、文字通りコントローラから小枝テンプレート関数を呼び出すことはできませんが、リンクを作成するには通常{{ path('_routeName') }}を実行してください。コントローラからTwig path()関数にアクセスするにはどうすればよいですか?

しかし、今私は、このようなパラメータを経由して、テンプレートに渡されますコントローラ内のいくつかのリンクを策定したい:私は、これらのリンクをハードコードにしたくない場合を除き

$params = array(
    'breadcrumbs' = array(
     'Donuts' => '/donuts', 
     'Bearclaws' => '/donuts/bearclaws', 
     'Strawberry bearclaw' => null, 
    ), 
); 
return $this->render('Bundle:Donut:info.html.twig', $params); 

。私がしたいのは、できることです。

 'Donuts' => path('_donutRoute'), 

どのようにパスの方法または同等の方法に到達するのですか?お使いのコントローラがSymfony2コントローラ(Symfony\Bundle\FrameworkBundle\Controller\Controller)を拡張している場合

答えて

36

あなたは、このようなURLを生成するには、次を使用することができます。

$this->generateUrl('_donutRoute')

+10

をそうでない場合、 'ます$ this->、コンテナ>( 'ルータ')を取得 - >( '_ donutRoute')を生成する;'行いますあなたは大丈夫です。 – Problematic

2

は私が感じてこれを行うための別の方法を発見したに等しく、 @

d.syph.3r計画によって提案された一つが行うことです。

'breadcrumbs' = array(
    'Donuts' => 'donutsRoute', 
    'Bearclaws' => 'bearclawRoute', 
    'Strawberry bearclaw' => null, 
) 

この場合、コントローラーがHTMLを生成しないという利点があります。ここでの利点は、コントローラがHTMLを生成していないことです。

8

あなたはパラメータでそれをしたい場合は、次の使用:

$this->generateUrl('_donutRoute', array('param1'=>'val1', 'param2'=>'val2')) 
関連する問題