如何在Symfony2 / Twig中正确生成模板中的URL

时间:2013-04-07 00:00:24

标签: php symfony twig

我正在使用Symfony2和:

我在routing.yml

中有这个
_welcome:
    resource: "@AcmeBundle/Controller/"
    type:     annotation

我在控制器中使用此方法:

/**
 * @Route("/{page}")
 */
public function staticAction($page)
{
    return $this->render('AcmeBundle:Static:'.$page.'.html.twig');
}

生成常用页面:

/home
/contact 
/privacy

但是当我在菜单上创建网址时:

<a href="{{ path('_welcome', {'page': 'home'}) }}">Home</a>
<a href="{{ path('_welcome', {'page': 'contact'}) }}">Contact</a>
<a href="{{ path('_welcome', {'page': 'privacy'}) }}">Privacy</a>

我和Symfony会生成这些网址:

…./?page=home
…./?page=contact
…./?page=privacy

右边是:

/home
/contact
/privacy

我该怎么办?

1 个答案:

答案 0 :(得分:45)

您需要在控制器路径注释中添加路由名称,如下所示

/**
 * @Route("/{page}", name="static")
 */
public function staticAction($page)
{
    // ... 
}

然后,您可以使用该名称

调用twig path助手
<a href="{{ path('static', {'page': 'home'}) }}">Home</a>