Tuto Symfony – Comprendre les liens entre les fichiers

C’est un poil plus compliqué que la structure MVC avec seulement trois dossiers (un pour les « modèles », un pour les « vues » et un pour les « contrôleurs ») mais une fois qu’on s’est familiarisé avec la structure de Symfony, ça va tout seul…

A la base, quand on crée un Bundle et qu’on le visualise dans son navigateur, il est poli, il dit bonjour. Mais où est le code qui lui permet de dire bonjour ?

Dans le bundle concerné, puis dans Resources/views/Default/index.html.twig.

Notons bien l’extension .html.twig. Twig, c’est un moteur de template pour PHP (donc Symfony, mais pas que). En gros, c’est un langage qui va permettre de pas s’emmerder pour afficher certaines choses… On va voir ça dans tous les futurs posts concernant Symfony. Tu vas voir, c’est rigolo.

symfony-index-hello_world

 

Pour rappel : Dans le dossier app, il y aura tout ce qui touche au projet en général.
Dans le dossier src, il y aura tout ce qui touche aux bundles en particulier.

C’est donc logiquement que dans app/config/routing.yml on voit qu’on appelle, qu’on configure les routing « internes » des Bundles avec leurs chemins respectifs. Dans cet exemple, il n’y en a qu’un mais quand vous aurez plusieurs Bundles, vous saurez que les routing de tous vos bundles seront appelés via le routing qui se trouve dans le dossier app.

symfony-app_config_routing

Dans le routing dédié à un bundle (celui qui sera dans un des dossiers de src), lorsqu’on appelle une vue, l’adresse est divisée en trois parties, séparées par 2 points :

  • NamespaceDuBundle (chemin raccourci vers src)
  • Dossier twig du bundle (Resources/views/ nom du dossier)
  • Nom du fichier twig.

Dans le routing, on voit que les path et les controller sont définis pour chaque page. Ici, on a entite_mouloud_homepage et entite_mouloud_ajoute.

Autre chose : regarde ce qu’il y a écrit à côté de « path » : un chemin. En fait, si on veut afficher la page homepage (ou index), dans l’URL, ça sera la racine du projet (soit localhost:8000) et si on veut afficher la page ajoute, on inscrira l’URL localhost:8000/ajoute. D’où l’importance de bien connaître ce routing car on va pouvoir définir les noms des URL !

symfony-src_routing

Toutes les actions dans le controller sont terminées par le mot Action(), le routing trouvera les actions grâce à cela. Ça semble obscur pour le moment mais tu vas comprendre au fur et à mesure des posts…

Le routeur en yml contient 3 éléments principaux séparés par « : » :

  • le nom d’un chemin (EntiteMouloudBundle) va servir dans les vues pour trouver les chemins ;
  • Le path qui va être l’URL (GET) qui sert à appeler le controller ;
  • Default est l’appel du contrôleur : /Controller/DefaultController:index via la méthode indexAction().

 

symfony-bundle-defaultcontroller

Et hop ! Admettons qu’on veut mettre des liens en interne (se balader d’une page à une autre), on utilisera les chemins définis. Et on retrouve entite_mouloud_homepage et entite_mouloud_ajoute.

Et regarde, en twig, on écrira ça simplement :

{{path(« entite_mouloud_homepage »)}}

Décortiqué, ça veut dire le chemin (path) sera celui qui est paramétré dans le routing sous le nom entite_mouloud_homepage. D’où l’importance de ce qu’on écrit dans le routing !

symfony-lien_path_interne


 

Notes annexes :

HttpFoundation et HttpKernel vont gérer l’apache. En fait, Symfony, c’est comme une surcouche serveur qu’on fait tourner sur Apache.

Symfony est un système en pur MVC.

Tous nos chemins doivent terminer par Action pour que ça fasse une action. Sinon, ça marche pas.

Un commentaire pour “Tuto Symfony – Comprendre les liens entre les fichiers

Laisser un commentaire

Articles similaires

Commencez à saisir votre recherche ci-dessus et pressez Entrée pour rechercher. ESC pour annuler.

Retour en haut