如何从Controller访问Twig path()函数?

时间:2011-09-07 12:39:08

标签: symfony

好吧,我知道我不能从控制器中直接调用twig模板函数,但是为了建立链接,我通常会执行{{ path('_routeName') }},这很棒。

但是,现在我想在控制器中制定一些链接,然后通过以下参数传递给模板:

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

除了我不想对这些链接进行硬编码。我想要的是能够做到

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

但是如何达到路径方法或等效方法?

3 个答案:

答案 0 :(得分:43)

如果你的控制器正在扩展Symfony2控制器(Symfony\Bundle\FrameworkBundle\Controller\Controller),你可以使用以下方法生成这样的网址:

$this->generateUrl('_donutRoute')

答案 1 :(得分:11)

如果您想要参数,请使用以下内容:

$this->generateUrl('_donutRoute', array('param1'=>'val1', 'param2'=>'val2'))

答案 2 :(得分:2)

我找到了另一种方法,我认为这与@ d.syph.3r提出的方法相同

计划是:

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

然后在树枝模板中,执行:

{% for name, route in breadcrumbs %}
   {{ path(route) }}

这里的优点是Controller在这种情况下不会生成任何HTML。