Vous avez crée des sous-répertoires pour classer vos vues en fonction de vos fonctionnalités mais vous ne savez pas comment les désigner dans vos contrôleurs ? Voici la réponse.
Description de l'arborescence
Imaginons que nous sommes en train de créer un blog. Vous allez avoir la partie visible du blog (le front), plus un système d'administration (le back).
Dans le dossier views, nous allons créer un dossier Front et un dossier Back.
Ensuite, nous allons créer un dossier Article dans le dossier Front. Il va contenir toutes les vues liées aux articles. Dans cet exemple, on aura une vue index.html.twig
On a donc l'arborescence :
/src/Xxx/YyyBundle/Ressources/views/Front/Article/index.html.twig
Côté contrôleur
La vue va être utilisée par l'action indexAction(). Pour lier l'action à cette vue, on va ajouter l'annotation @Template.
On sépare les différents niveaux à l'intérieur du dossier views par le caractère /. Attention l'erreur fréquente est de mettre le caractère : à la place de /.
Le caractère : sert uniquement à séparer le nom complet du bundle (ici : XxxYyyBundle) avec les dossiers contenus dans le dossier views (ici : Front/Article). Il sert également à séparer les dossiers contenus dans le dossier views avec la vue (ici : index.html.twig).
/**
* @Template("XxxYyyBundle:Front/Article:index.html.twig")
*/
public function indexAction()
{
[...]
}
Dans cette article, la solution donnée décrit le cas quand vous utilisez la méthode des annotations pour lier les vues aux actions des contrôleurs, mais le principe reste le même pour les autres méthodes (YAML, ...)
Versions
Cette article a été testé avec les versions suivantes :
PHP : 5.5.12
Symfony : 2.5.3