Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Les bases de Symfony 2

Article posté le 22-08-2014 dans la catégorie PHP

A 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.

1- Installation de Symfony

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

 

2- Les répertoires

Dans votre dossier Symfony, vous trouverez plusieurs répertoires:

3- Point d'entrée de l'application

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.

4- Le contenu d'un bundle

L'organisation typique d'un bundle est telle que :

5- Création d'un bundle en mode console

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.

6- Quelques explications

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.


Tweet
comments powered by Disqus