好吧,我知道我不能从控制器中直接调用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'),
但是如何达到路径方法或等效方法?
答案 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。