web-dev-qa-db-fra.com

Comment générer correctement des URL à partir d'un modèle dans Symfony2 / Twig

Je travaille avec Symfony2 et:

J'ai ceci dans le routing.yml

_welcome:
    resource: "@AcmeBundle/Controller/"
    type:     annotation

I cette méthode au sein d'un contrôleur:

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

Pour générer des pages communes:

/home
/contact 
/privacy

Mais quand je fais l'url dans le 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>

Et je Symfony génère ces URL:

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

Et le droit serait:

/home
/contact
/privacy

Que dois-je faire?

25
rpayanm

Vous devez ajouter un nom de route dans les annotations de route de votre contrôleur comme suit,

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

Vous pouvez ensuite appeler l'assistant twig path en utilisant ce nom,

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