How Generating URLs from a template correctly in Symfony2/Twig

php, symfony, twig

Solution

You've to add a route name in your controller route annotations as follow,

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

You could then call the twig `path` helper using that name,

<a href="{{ path('static', {'page': 'home'}) }}">Home</a>

Problem

I'm working with Symfony2 and: I have this in the routing.yml ``` _welcome: resource: "@AcmeBundle/Controller/" type: annotation ``` I this method within a controller: ``` /** * @Route("/{page}") */ public function staticAction($page) { return $this->render('AcmeBundle:Static:'.$page.'.html.twig'); } ``` To generate common pages: ``` /home /contact /privacy ``` But when I make the url on the menu: ``` <a href="{{ path('_welcome', {'page': 'home'}) }}">Home</a> <a href="{{ path('_welcome', {'page': 'contact'}) }}">Contact</a> <a href="{{ path('_welcome', {'page': 'privacy'}) }}">Privacy</a> ``` And I Symfony generates these urls: ``` …./?page=home …./?page=contact …./?page=privacy ``` And the right would be: ``` /home /contact /privacy ``` What must I do?

Original source