Article mis à jour le : 05-05-2022
Les bases à connaitre avant de se lancer dans Symfony IIA l'instar des mes petits tutos portant sur Zend Framework II, nous allons aborder ici puis plus tard quelques notions avec l'autre grand framework PHP, en l'occurence Symfony II. Je vais essayer de faire les choses le plus simplement, d'aller à l'essentiel.
Notez que nous travaillerons avec la version 2.3.
Je vous conseille de vous créer un hôte virtuel afin de vous faciliter votre travail. Dans notre cas, notre domaine de travail sera multimedia.dev. Votre domaine doit pointer vers le répertoire web de Symfony.
Pour installer Symfony, vous devez idéalement avoir installer LE gestionnaire de paquets par excellence pour PHP : Composer, que vous trouverez sur son site officiel. Une fois que c'est fait, vous devrez vous créer un répertoire dans votre serveur Web de développement (j'utilise Wamp). Ensuite, ouvrez une fenêtre en mode console et placez vous dans le répertoire en question. Exécutez à présent cette commande (note, vous aurez besoin d'avoir les droits nécessaires pour effectuer cette opération) :
composer create-project symfony/framework-standard-edition path/ "2.3.*"
Pour vérifiez que tout est ok, connectez vous à cette adresse :
http://multimedia.dev/config.php
Dans votre dossier Symfony, vous trouverez plusieurs répertoires:
Le point d'entrée de votre application est un contrôleur frontal. Ils y en a deux :
Tous deux se trouvent dans le répertoire web.
L'organisation typique d'un bundle est telle que :
Un des avantages de Symfony, c'est que l'on peut utiliser la console pour gagner du temps, car cela permet de faire de la génération de code.
Ouvrez la console, et placez vous dans le répertoire de votre application Symfony, puis tapez :
php app/console generate:bundle
Vous devez d'abord saisir le namespace (espace de nom), avant de saisir le nom du bundle. Il se compose en deux parties, le vendor name (votre pseudo par exemple), et le nom du bundle en question. Faites comme indiqué dans la console, utilisez le slash au lieu de l'antislash pour éviter les soucis. Ainsi, si notre bundle s'intitule "Toto", alors vous devez saisir votre namspace comme ceci :
MonPseudo/TotoBundle
car le nom du bundle doit comporer le suffixe "Bundle".
Ensuite on vous demande le nom du bundle. Normalement, on vous propose "TotoBundle". Validez.
On vous demande ensuite le format du bundle, pour commencer, nous utiliserons le format YAML (yml).
La question suivante, Symfony vous demande si on doit générer l'arborescence complète ou le minimum. Tapez yes pour tout avoir. Ensuite, aux questions suivantes, confirmez toujours en appuyant sur Entrée.
Essayons le résultat :
Dans votre navigateur, tapez :
http://multimedia.dev/app_dev.php/hello/eric
La page vous affichera "Hello eric".
Vous remarquerez, que j'ai beau avoir choisir le mode dev pour mon essai, la toolbar du mode dev n'apparaît pas en bas. Si vous la désirez, il vous suffit d'éditer la vue principale de votre bundle :
src/MonPseudo/TotoBundle/Resources/views/Default/index.html.twig
Votre fichier ne contient que ceci :
Hello {{ name }}!
Pour afficher la toolbar, c'est très simple, vous avez juste à envelopper ce code dans une balise html et une balise body, comme dans un fichier html normalement structuré... A présent vous pouvez actualiser, la toolbar apparaît.
Bien maintenant passons à quelques explications techniques.
Comme vous avez pu le constater Symfony a donc généré l'arborescence complète de votre bundle. Il est à noter que le seul fichier obligatoire dans un bundle, est son fichier php racine, en l'occurence ici TestBundle.php.
Nous avons vu également que Symfony a enregistré votre bundle pour qu'il soit chargé automatiquement. Vous pouvez vous en rendre compte en ouvrant le fichier du kernel :
app/AppKernel.php
dans lequel vous trouverez :
new MonPseudoTestBundleMonPseudoTestBundle(),
Dans ce fichier, vous remarquerez que tous les composants de Symfony ainsi que les autres bundles sont égalements chargés. Parmi les composants on peut mentionner le routeur. D'ailleurs, lors de la création du bundle, Symfony a enregistré notre bundle auprès du routeur.
Le routeur
Pour faire simple, le routeur fait la liaison entre l'url demandée et le bundle approprié. Le routeur se trouve ici :
app/config/routing.yml
Vous remarquerez donc que dans ce fichier, on fait appel à un autre fichier, il s'agit du fichier routes de votre bundle. Allons-y!
src/MonPseudo/TotoBundle/Resources/config/routing.yml
Pour l'instant, votre fichier ne contient qu'une seule route, celle que nous avons essayé précedemment.
Note:
Sachez évidemment que vous n'êtes pas obligé d'utiliser le générateur, mais le cas échéant, n'oubliez rien des éléments mentionnés ci-dessus!
Voilà, c'est tout pour les bases de Symfony. Prochain tuto : développer son bundle.