59
 Développez vos applications web avec Symfony2 ! Par Vincent Paulin (Genokiller) et Sylvain Maud uit ( Swop) www.siteduzero.com Licence Creative Commons BY-NC-SA 2.0 Dernière mise à jour le 24/04/2012 

582312 Developpez Vos Applications Web Avec Symfony2

Embed Size (px)

Citation preview

Dveloppez vos applications web avec Symfony2 !Par Vincent Paulin (Genokiller) et Sylvain Mauduit (Swop)

www.siteduzero.com

Licence Creative Commons BY-NC-SA 2.0 Dernire mise jour le 24/04/2012

Sommaire

1/58

SommaireSommaire ........................................................................................................................................... Partager .............................................................................................................................................. Dveloppez vos applications web avec Symfony2 ! ........................................................................... Partie 1 : Tour d'horizon ...................................................................................................................... 1 1 3 3

Prsentation gnrale ....................................................................................................................................................... 4Un nouveau regard sur son travail .............................................................................................................................................................................. 4 Apprendre mieux travailler ....................................................................................................................................................................................... 4 Que propose un framework ? ...................................................................................................................................................................................... 4 Pourquoi utiliser un framework ? ................................................................................................................................................................................. 5 Pourquoi choisir Symfony2 ? ....................................................................................................................................................................................... 5 Et pourquoi pas un autre ? .......................................................................................................................................................................................... 5

Mise en place .................................................................................................................................................................... 8Installation ................................................................................................................................................................................................................... 8 C'est parti ! .................................................................................................................................................................................................................. 8 Configuration ............................................................................................................................................................................................................. 11 Et oui, on a rien sans rien... ....................................................................................................................................................................................... 11 Un dernier nettoyage ................................................................................................................................................................................................. 13

L'architecture ................................................................................................................................................................... 14Vue d'ensemble ......................................................................................................................................................................................................... 15 A quoi ressemble Symfony ? ..................................................................................................................................................................................... 15 Le contrleur principal : le point d'entre de l'application .......................................................................................................................................... 15 Et ensuite, comment a marche ? ............................................................................................................................................................................. 16 Connatre et configurer son application ..................................................................................................................................................................... 16 O se trouve le code source ? .................................................................................................................................................................................. 18 Les vendors ............................................................................................................................................................................................................... 18 Et moi, je code o dans l'histoire ? ............................................................................................................................................................................ 18 La web debug toolbar ................................................................................................................................................................................................ 18 O suis-je ? ............................................................................................................................................................................................................... 18 Qu'est-ce qu'il s'y passe ? ......................................................................................................................................................................................... 19

Une histoire de bundle .................................................................................................................................................... 19Cration ..................................................................................................................................................................................................................... 20 Dcouverte de l'architecture ...................................................................................................................................................................................... 23

Manipulez vos nouveaux jouets ! .................................................................................................................................... 25Le routing dans toute sa splendeur ........................................................................................................................................................................... Le routing, c'est puissant ........................................................................................................................................................................................... Utilisez vos routes dans votre contrleur et votre template ...................................................................................................................................... TP : Exploitez vos contrleurs ................................................................................................................................................................................... Un contrleur gnreux de possibilits ..................................................................................................................................................................... 26 26 27 28 28

Partie 2 : Dveloppez s'il vous plait ! ................................................................................................. 32Vos premiers pas avec les formulaires ........................................................................................................................... 33Une interaction plus volue ..................................................................................................................................................................................... Un outil indispensable, le FormBuilder ...................................................................................................................................................................... Que diriez-vous d'afficher notre formulaire ? ............................................................................................................................................................ Passage la pratique : un formulaire de contact ...................................................................................................................................................... La cration du formulaire .......................................................................................................................................................................................... Imbriquez vos formulaires ! ....................................................................................................................................................................................... Traiter les donnes reues ........................................................................................................................................................................................ Mais il ne fait rien mon formulaire ? .......................................................................................................................................................................... Un formulaire de contact, c'est aussi et surtout un envoi de mail, non ? .................................................................................................................. Le rsultat final .......................................................................................................................................................................................................... Un peu de bonnes pratiques ..................................................................................................................................................................................... Utiliser un handler pour traiter les formulaires .......................................................................................................................................................... Que peut-on valider et avec quoi ? ........................................................................................................................................................................... Liste des validateurs disponibles .............................................................................................................................................................................. Comment s'en servir ? .............................................................................................................................................................................................. La validation d'objets ................................................................................................................................................................................................. La cration de l'objet ................................................................................................................................................................................................. La validation via le fichier de validation ..................................................................................................................................................................... La validation via les asserts ...................................................................................................................................................................................... Des validateurs complexes ....................................................................................................................................................................................... Valider ses donnes avec les getters ........................................................................................................................................................................ Utiliser des callbacks ................................................................................................................................................................................................. Introduction aux services .......................................................................................................................................................................................... Qu'est-ce qu'un service ? .......................................................................................................................................................................................... Une architecture oriente services ............................................................................................................................................................................ L'apprentissage par l'exemple ................................................................................................................................................................................... Initialisation d'un service ........................................................................................................................................................................................... Matrisez vos services avec les scopes .................................................................................................................................................................... Donnez un rle vos services avec les tags ............................................................................................................................................................ Utilisez une Factory pour instancier vos services ..................................................................................................................................................... Utilisons nos services ................................................................................................................................................................................................ Rcapitulatif .............................................................................................................................................................................................................. 33 33 33 34 34 35 36 36 37 37 38 38 42 42 42 43 43 44 45 46 46 47 50 50 50 51 51 54 54 55 55 55

Vrifiez et validez vos donnes ....................................................................................................................................... 41

Vous avez dit services ? .................................................................................................................................................. 50

www.siteduzero.com

Sommaire

2/58

L'intgration dans les contrleur ............................................................................................................................................................................... 56 Rutilisez et structurez vos services ......................................................................................................................................................................... 57

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !

3/58

Dveloppez vos applications web avec Symfony2 !

Par

Vincent Paulin (Genokiller) et

Sylvain Mauduit (Swop)

Mise jour : 24/04/2012 Difficult : Intermdiaire

Dure d'tude : 8 heures

970 visites depuis 7 jours, class 121/781

V ous avez toujours pens que crer un site web tait complexe ? V otre code devient rapidement trop lourd ? Qui a dit que le PHP tait un langage brouillon ? V ous manquez d'organisation dans votre projet ? Symfony est l pour vous simplifier la vie ! Avec Symfony vous apprendrez crer toute sorte d'applications web de manire simple et efficace. Si Symfony est de plus en plus rput dans le monde, ce n'est pas par hasard. Il offre une libert exceptionnelle tout en proposant le respect d'une architecture qui permet de rpondre la plupart de nos attentes et qui permet une grande flexibilit afin que chacun puisse tout de mme travailler comme il le souhaite. En lisant ce tutoriel, vous apprendrez matriser un nouvel outil aux capacits immenses. S'il s'avre que vous n'tes pas encore trs bon dans la programmation web, vous vous rendrez compte de l'norme niveau que vous aurez acquis. Enfin, j'espre que les plus confirms y trouveront leur bonheur et la solution la plupart de leurs problmes.

Afin de comprendre et d'apprcier l'entiret de ce tutoriel, il est indispensable de s'tre attard un minimum sur le tutoriel PHP/MySQL de Mathieu Nebra (M@teo21) De plus, certains concepts pourront vous paratre flous sans un minimum de connaissances en Programmation Orient Objet. Bien videment, si vous avez dj pratiqu la POO en Java ou C++ par exemple, cela est suffisant pour comprendre le framework dans son ensemble. Par contre, si vous souhaitez matriser votre travail, il est ncessaire d'avoir de solides connaissances dans le domaine de la POO. Il est aussi ncessaire de connaitre le concept de namespace en PHP : Les espaces de noms en PHP

Je vous souhaite une agrable lecture ! PS: Et bien du courage...

Exemples d'applications ralises avec Symfony

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !

4/58

Partie 1 : Tour d'horizonBienvenue jeune padawan (ou grand matre pour ceux qui matrisent...) ! Dans cette premire partie, nous allons commencer lger. Nous ne sommes pas l pour vous bourrer d'informations incomprhensibles qui seront oublies dans une semaine. Nous allons y aller pas pas pour tout d'abord apprhender notre sujet et raliser nos premires crations. Eh oui, avec Symfony, tout peut aller trs vite et ce, dans tous les sens du terme... C'est parti !

Prsentation gnrale

Nous y sommes, voici le premier chapitre de ce tutoriel. Nous allons ensemble dcouvrir Symfony2. Tout d'abord, je lverai le doute sur la premire question qui se pose naturellement : Symfony2, c'est quoi au juste ? Et d'o est-ce que a sort d'ailleurs ?

Un nouveau regard sur son travail Apprendre mieux travaillerActuellement, vous avez un niveau correct en PHP. V ous savez structurer votre code afin de raliser des sites web plus ou moins basiques. V ous connaissez la programmation oriente objet et aimeriez bien enfin pouvoir l'appliquer sur un vrai projet, mais vous ne savez pas forcement comment vous y prendre. V ous avez besoin de clarifier ou de simplifier les choses dans votre code sans toutefois perdre trop de temps. V ous prenez les choses en mains et vous vous interrogez propos d'une ventuelle solution tous vos problmes. Les frameworks sont l pour vous ! Mais bon, un framework, qu'est-ce que a signifie ? "Framework" est un terme tout droit venu de l'anglais signifiant "cadre de travail". Un framework est l pour vous aider structurer votre projet. Il apporte un ensemble d'lments qui dfinissent le squelette d'une application et certaines briques de base qui vous facilitent la vie. Un framework offre tout un panel d'outils pour aider le dveloppeur dans la ralisation de son application tout en offrant une certaine libert dans la ralisation technique de celle-ci.

Que propose un framework ?Un framework n'est pas indispensable pour raliser une application web, mais il apporte ce qu'il faut pour tre bien plus efficace, rapide et crer une application de qualit ! Un framework vous offre la possibilit de dvelopper une application dans les rgles de l'art. Il permet de raliser une application structure, maintenable et volutive. De plus, la flexibilit du framework vous permet de vous concentrer entirement sur votre application sans trop se soucier du reste. N'ayez crainte, vous matrisez toujours l'intgralit de votre application. Le framework va vous apporter certaines briques de base qui permettent de ne pas avoir rinventer la roue. Abstraction de la base de donnes : un framework utilise PDO, une solution qui vous permet d'ajouter une couche d'abstraction entre votre base de donnes et votre code. V ous n'avez plus vous soucier du type de base de donnes qui fonctionne derrire votre application. Un framework embarque aussi gnralement un ORM (object relational mapper) qui permet d'installer une couche d'abstraction supplmentaire entre les appels votre base de donnes et votre code. V ous pouvez ainsi faire des oprations courantes comme la rcupration de donnes ou la sauvegarde d'un objet sans vous soucier du code SQL crire.

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !Abstraction de la base de donnes Couche dabstraction du cache : Plutt que dutiliser des fonctions de mise en cache spcifiques, vous allez pouvoir utiliser des fonctionnalits de mise en cache gnriques telles que Memcache, APC et XCache. Gestion des formulaires : Le framework offre la possibilit de gnrer en grande partie tous les widgets HTML, il se charge de la validation du formulaire et de la scurit CSRF (Cross-Site Request Forgery). Gestion d'utilisateurs : La plupart des frameworks ont tout ce qu'il faut pour pouvoir grer l'authentification d'utilisateurs. Ils grent la connexion, la dconnexion, la cration, la gestion des sessions et des droits. Gestion des erreurs et bien plus : Certains frameworks comme Symfony offrent de trs bon outils de dbogage ainsi qu'un "profiler" qui permet de vous renseigner sur tout ce qu'il se passe dans votre application (variables globales, requtes de base de donnes, logs, temps de chargement, etc.). Internationalisation : Les frameworks vous permettent de crer facilement le multilingue pour vous et ce, de manire native la plupart du temps. Moteur de template : De nombreux frameworks intgrent un moteur de templates. Celui-ci permet de simplifier grandement l'criture de votre code HTML tout en tant propre et efficace. Vous vous rendez compte du temps qu'il est possible de gagner toutes ces choses si complexes et longues mettre en place ! ? Avec un framework vous n'avez plus vous soucier de

5/58

Pourquoi utiliser un framework ?Il y a d'autres avantages utiliser un framework. D'une part, un framework est portable, de part son abstraction de la base de donnes et de la gestion gnrique du cache. V ous l'aurez compris, les temps de dveloppement avec un framework sont rellement plus courts. Tous les outils essentiels sont dj crits pour vous. Avec un framework, vous dveloppez une application facilement scurisable grce aux systmes d'authentification, la gestion des injections SQL ainsi qu' la protection CSRF qui est gre par la plupart des frameworks. Les frameworks sont des outils communautaires et ont, par consquent, des forums, des listes de diffusion et des canaux IRC pour les soutenir. Si vous rencontrez un problme avec un framework, les chances que quelquun dautre ait dj eu le mme problme et ait apport un correctif sont trs grandes, notamment sur les frameworks largement dploys. Encore une bonne nouvelle, sachez que les membres de la communaut dveloppent rgulirement des plugins et des modules que vous pouvez tlcharger et utiliser dans votre application. L'avantage d'un framework, c'est aussi de pouvoir travailler dans le respect des bonnes pratiques et de rutiliser des mthodologies de conception standardises. On peut particulirement citer le design pattern MVC, accronyme de l'expression "Modle - Vue - Contrleur". Un design pattern est traduit par "patron de conception", c'est donc un modle qui a fait ses preuves et qui s'avre indispensable connaitre dans le domaine de la programmation. Dcoupons un peu tout a : Modle : Le modle est la partie du code qui se charge d'intragir avec la base de donnes. On y retrouve donc les appels SQL que nous aurons dfinis. Vue : La vue est la partie du code qui se charge uniquement d'afficher les donnes qui lui ont t fournies. En aucun cas, la vue ne doit effectuer de traitement sur les donnes, sauf dans le but d'en embelir l'affichage. Contrleur : Le contrleur est le centre de notre design pattern. Il reoit la requte HTTP, l'interprte et coordonne le tout. Il se charge de demander au modle les donnes puis effectue plus ou moins de traitements dessus afin d'envoyer la vue les donnes afficher et de retourner une rponse l'meteur de la requte.

Schmatisation du design pattern MVC On remarque bien que chaque phase du travail est bien spare, ce qui permet une organisation plus claire du code. Chaque chose sa place. Tout cela est rjouissant n'est-ce pas ? Sachez tout de mme qu'apprendre utiliser un framework n'est pas une mince affaire. Il faut beaucoup de temps, suivre des cours bien construits afin de parfaire vos connaissances et de matriser un nouvel outil. Mais n'oubliez pas que le jeu en vaut la chandelle.

Pourquoi choisir Symfony2 ? Et pourquoi pas un autre ?Symfony2 est un framework cod en PHP qui va nous permettre de dvelopper une immensit d'applications web de la plus

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !simple la plus complexe imaginable. Car en effet, Symfony dfini un squelette de base respecter, mais dans lequel on peut y mettre tout le code que l'on souhaite. Il n'y a donc aucune limite ! Seule votre motivation pourra vous freiner, mais nous avons tous un norme potentiel qui ne demande qu' tre exploit. Symfony2 est l pour nous aider le mettre en avant. Quelques framework PHP assez connus : CakePHP CodeIgniter Zend Framework Symfony2

6/58

CakePHP est un framework trs simple d'utilisation. Facile apprhender, il fournit un ensemble de briques de base solides et peut facilement tre coupl un ORM

Code Igniter est un trs bon framework qui se fait de plus en plus connaitre de part sa qualit. Il n'embarque pas d'ORM mais dispose de l'essentiel pour rpondre la plupart des demandes.

Le ZendFramework est plus considr comme une grosse bibliothque de fonctionnalits plutt qu'un framework part entire et n'est pas trs simple comprendre pour un dbutant. Dans sa version 2, il passe rellement dans la catgorie des frameworks avec une approche trs proche de celle de Symfony2. Nanmoins, de solides connaissances sont aussi prvoir afin d'exploiter correctement l'outil.

Symfony2 est un framework qui dispose d'un bon nombre de briques de base tout en laissant pas mal de liberts au dveloppeur. Cependant, Symfony2 peut tre dlicat aborder pour un dbutant s'il n'a pas de bonnes connaissances en programmation oriente objet et une certaine matrise des technologies web est ncessaire pour en exploiter toute la puissance du produit.

Je vous laisse prendre votre propre dcision, mais le sujet de ce tutoriel reste tout de mme l'tude du framework Symfony. Je vais tout de mme justifier mon choix en vous exposant certains points connaitre sur le framework dans sa globalit :

Une grande rputationLanc en 2005, Symfony est aujourd'hui un framework stable connu et reconnu l'international. Symfony dispose aussi une communaut active de dveloppeurs, intgrateurs, utilisateurs et d'autres contributeurs qui participent l'enrichissement continu de l'outil.

Qui est derrire tout a ?Derrire Symfony se cache une entreprise : Sensio. Sensio est une agence web cre il y a 12 ans. Oui, ce sont bien des franais qui sont derrire Symfony, plus particulirement Fabien Potencier et toute son quipe. Imagin au dpart pour ses propres besoins, le framework Symfony est aujourd'hui encore l'outil utilis au quotidien par ses propres quipes. Symfony est un outil qui arrive rpondre aux exigences du monde professionnel.

Fabien Potencier, lead dveloppeur du projet Symfony

Qui utilise Symfony ?De nombreux sites et applications de toutes tailles et de tous les types ! C'est par exemple le cas de Yahoo!, Dailymotion, Opensky.com, Exercise.com et mme des applications telles que phpBB.

De l'innovationSymfony est tout ce que vous attendez d'un framework : rapidit, flexibilit, des composants rutilisables, etc. De bonnes ides ont fait leur petit bout de chemin, c'est par exemple le cas de l'injection de dpendances. Un concept tout droit venu du monde du Java ! On retrouve aussi une "web debug toolbar" que l'ont peut retrouver dans d'autre framework et qui apporte un une bonne amlioration de la productivit des dveloppeurs.

Avec Symfony, vous n'tes jamais seul !Lorsque vous utilisez Symfony, vous tes assur de ne jamais vous retrouvez seul. Une communaut se trouve cot de vous ! Des conversations par mail sont partages, des channels IRC existent pour que vous exposiez vos problmes, de nombreux

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !travaux sont publis rgulirement et bien videment, le Site du Zro est l pour vous accompagner !

7/58

Utiliser, r-utiliser, exploiter sans limitesL'ide est de pas vous enfermer dans Symfony ! Permettez-vous de construire des applications qui rpondent prcisment vos besoins ! Symfony tend respecter un maximum de conventions de codage. Ce n'est certes pas parfait, mais le framework s'efforce respecter des standards comme PSR-0 et HTTP. Enfin, Symfony est distribu sous licence Open Source MIT, qui n'impose pas de contraintes et permet le dveloppement de l'Open Source ainsi que des applications propritaires.

Alors, convaincu ? V ous avez pour habitude de travailler sur symfony 1.4 ? Alors vous arriverez rapidement cerner ce nouveau framework. Non pas qu'ils se ressemblent, mais vous avez l'habitude d'utiliser un framework avec une architecture fixe et vous souhaitez voluer vers quelque chose offrant plus de flexibilit tout en abordant de nouveaux concepts de programmation en PHP, alors n'hsitez plus, franchissez le cap ! Dans ce premier chapitre, mon but tait de vous faire rendre compte de l'utilit d'un framework. Certains n'en verront pas la ncessit dans l'immdiat, d'autres vont prendre conscience de l'norme quantit de temps qu'il est possible de gagner et se demanderont pourquoi ils ont attendu tout ce temps pour se mettre utiliser un framework. Enfin, le choix du framework va dpendre de vos envies et de vos besoins. Si Symfony vous motive, je vous invite poursuivre avec son installation !

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !

8/58

Mise en placeLe but de ce chapitre est d'installer et de configurer notre premier projet Symfony ! Allez, je suis sr que vous trpignez d'impatience !

Installation C'est parti !Puisqu'il faut bien commencer quelque part, je vous conseille tout d'abord de vous prparer un environnement propre sous apache pour accueillir votre projet Symfony ! Pour ceux qui ont oubli comment faire, je vous suggre de faire un petit tour sur le tutoriel PHP.

Installer php en ligne de commandeTout d'abord, ouvrez votre console ! Si vous tes sous Linux vous ne devriez pas avoir de problmes suivre, mais au cas o, un petit rappel ne fait pas de mal : c'est par ici. Pour les habitus de Windows : Menu Dmarrer > Tous les programmes > Accessoires > Invite de commandes. Enfin, pour les utilisateurs de MacOS, quelque chose comme Accessoires > Console devrait vous guider. Pour Linux et MacOS, le problme de PHP en ligne de commande ne se pose pas, pour Windows, c'est diffrent. V comment oici procder : Dmarrer -> Panneau de configuration -> Systme et scurit -> Systme -> Paramtres systme avancs Allez l'onglet "Paramtres systme avancs" Cliquez sur le bouton "Variables d'environnement" Regardez dans le panneau "Variables systmes" Trouvez l'entre Path (vous devriez avoir faire descendre l'ascenseur pour le trouver) Double cliquez sur l'entre Path Entrez votre rpertoire PHP la fin, sans oublier le point virgule (;) avant (par exemple ;C:\php) Double cliquez sur l'entre PATHEXT Ajoutez .PHP la fin, sans oublier le point virgule (;) Confirmez en cliquant sur OK Assurez-vous de redmarrer l'ordinateur aprs avoir suivi cette procdure afin que les modifications sur la variable PATH soient bien prises en compte.

Ensuite, associez l'extension .PHP avec un type de fichier. Ceci peut tre fait en excutant la commande suivante : Code : Console assoc .php=phpfile

Enfin, associez le type de fichier phpfile avec l'excutable PHP appropri. Ceci peut tre fait en excutant la commande suivante : Code : Console ftype phpfile="C:\wamp\bin\php\php5.3.8\php.exe" -f "%1" -- %~2

N'oubliez pas de remplacer "C:\wamp\bin\php\php5.3.8\php.exe" par le chemin d'accs votre installation de PHP. Si vous obtenez un message d'erreur comme 'Accs refus', c'est que vous n'avez pas dmarr votre console en tant qu'administrateur !

Et si tout va bien, en tapant cela : Code : Console php -v

V ous devriez obtenir quelque chose peu prs comme cela : Code : Console PHP 5.3.8 (cli) (built: Sep 16 2011 21:28:32) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans

Tout va bien ? Alors a signifie que php est correctement install sur votre machine !

Configurer son virtualhostAfin de faire fonctionner correctement Symfony, il est necessaire de bien configurer un virtualhost. Avec Linux :

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !Ajoutez un nouveau vhost dans le dossier sites-available situ dans le dossier d'installation d'Apache. Code : Console cd /etc/apache2/sites-availables sudo nano default

9/58

Puis remplacez le contenu par les lignes suivantes : Code : Apache DocumentRoot /home/user/www/tuto/Symfony/web DirectoryIndex app_dev.php Options -Indexes FollowSymLinks SymLinksifOwnerMatch AllowOverride All Allow from All

N'oubliez pas d'activer le nouveau site en faisant un lien dans le dossier correspondant : Code : Console sudo a2ensite mon-site

Il est parfois ncessaire de rappeler Apache que l'on travaille sur le serveur "localhost", pour cela, rien de plus simple : sudo echo "ServerName localhost" >>/etc/apache2/apache2.conf

Il faut ensuite installer et activer les extensions ncessaires : Code : Console sudo apt-get install php5-intl sudo apt-get install php-apc # Ouvrez le fichier php.ini sudo gedit /etc/php5/apache2/php.ini

Vrifiez lexistence de ces lignes dans le fichier. Modifiez le fichier si ncessaire. Code : Apache extension = apc.so avant [APC] apc.enabled = 1 short_open_tag = off date.timezone = Europe/Paris

V ous pouvez aussi installer phpmyadmin si vous ne le possdez pas encore : Code : Console sudo apt-get install phpmyadmin sudo ln -s /usr/share/phpmyadmin /home/user/www/phpmyadmin

Enfin, redmarez Apache : Code : Console sudo service apache2 restart

Avec Windows : Si vous utilisez Wamp, il vous suffit cliquer sur l'icone dans votre barre des taches, passer votre curseur sur la ligne Apache et cliquer sur httpd.conf.

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !

10/58

Ajoutez ces quelques lignes la fin de votre fichier : Code : Apache ServerName localhost DocumentRoot C:\wamp\www\tuto\Symfony\web DirectoryIndex app_dev.php Options -Indexes FollowSymLinks SymLinksifOwnerMatch AllowOverride All Allow from All

Vrifiez que vous avez bien activ les diffrentes extensions de php. Toujours dans le menu de Wamp, cette fois-ci placez votre curseur sur le menu PHP puis sur PHP extensions. Vrifiez que php_intl et php_apc soient cochs. Dans le menu PHP settings, vrifiez que vous avez bien dsactiv "short open tag". Cliquez ensuite sur php.ini pour l'ouvrir, cherchez la ligne date.timezone et configurez la comme cela : date.timezone = Europe/Paris. Si vous avez quelques soucis avec APC ou que vous ne le trouvez pas dans la liste, je vous suggre de suivre les instructions donnes dans ce tutoriel : Acclrer la gnration de vos pages PHP avec l'extension APC. Sachez tout de mme qu'APC n'est pas indispensable pour suivre ce tutoriel, mais il est recommand. Un redmarrage d'Apache est indispensable pour que les modifications soient prises en compte, cliquez donc sur "Restart all services" depuis le menu de Wamp.

Installer SymfonyCa y est, tout est prt ? Et bien installons la bte ! Rendez-vous directement sur le site officiel du framework pour le tlchargement. Prenez la dernire version avec ou sans les vendors, de toutes faons nous allons les tlcharger nouveau. Une fois tlcharg, dcompressez moi tout a, prenez le dossier Symfony, copier/coller le dans votre dossier web de destination et hop, fini ! Bon d'accord, pas tout fait, mais c'est un bon dbut .

Si tout va bien, vous devriez avoir cette arborescence :

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !Afin de vrifier que tout c'est bien pass, vous pouvez excuter le script de vrification en vous plaant dans le dossier de Symfony : Code : Console php app/check.php

11/58

Code : Console ** Mandatory requirements ** OK OK OK OK OK OK OK OK OK OK Checking Checking Checking Checking Checking Checking Checking Checking Checking Checking that that that that that that that that that that PHP version is at least 5.3.2 (5.3.8 installed) the "date.timezone" setting is set app/cache/ directory is writable the app/logs/ directory is writable the json_encode() is available the SQLite3 or PDO_SQLite extension is available the session_start() is available the ctype_alpha() is available the token_get_all() is available the APC version is at least 3.0.17

** Optional checks ** OK OK OK OK OK Checking Checking Checking Checking Checking that that that that that the the the the the PHP-XML module is installed token_get_all() function is available mb_strlen() function is available iconv() function is available utf8_decode() is available

[[WARNING]] Checking that the intl extension is available: FAILED *** Install and enable the intl extension (used for validators) *** [[WARNING]] Checking that *** Install a OK Checking that OK Checking that OK Checking that OK Checking that a PHP accelerator is installed: FAILED PHP accelerator like APC (highly recommended) *** php.ini has short_open_tag set to off php.ini has magic_quotes_gpc set to off php.ini has register_globals set to off php.ini has session.auto_start set to off

** Optional checks (Doctrine) ** OK OK Checking that PDO is installed Checking that PDO has some drivers installed: mysql, sqlite

Activez les extensions php et/ou apache ncessaires au bon fonctionnement du framework et si vous n'avez plus d'erreurs et de warning, poursuivez !

Configuration Et oui, on a rien sans rien...Mettre jour les vendorsNous pouvons donc poursuivre, rendez-vous dans le rpertoire ou est situ votre projet Symfony. Il nous faut mettre jour les vendors. Mais qu'est-ce que c'est les vendors ? Pourquoi devrais-je faire a ?

Les vendors est un rpertoire du projet qui contient toutes les librairies externes au projet qui permettent de la faire fonctionner. Mais ce n'est pas le sujet de ce chapitre, j'y rpondrais plus en dtails dans le prochain chapitre. Pourquoi vous devez faire cela ? Mais pour installer Symfony pardi ! Tout d'abord, vous devez avoir installer GIT sur votre machine pour l'utiliser en console, si ce n'est pas dj fait, rendezvous ici : Grez vos codes source avec Git Passons-en au fait : Code : Console php bin/vendors install

Si vous avez tlcharg la version avec les vendors, excutez la commande suivante pour tre sur d'tre jour : Code : Console php bin/vendors install --reinstall

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !Droits d'accsEtape suivante, ajouter les bons droits d'accs aux dossiers de cache et de logs. Oui, Symfony utilise du cache. Oui, Symfony log pas mal de chose. C'est bon tout a ! Aidons le un peu, vidons le contenu des deux dossiers puis attribuons leur les bons droits : Code : Console rm -rf app/cache/* rm -rf app/logs/*

12/58

Code : Console # Avec le systme d'ACL en sachant que votre systme supporte la commande chmod +a sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs sudo chmod +a "votre_login allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs # Ou si votre systme supporte setfacl sudo setfacl -R -m u:www-data:rwx -m u:drdjo:rwx app/cache app/logs sudo setfacl -dR -m u:www-data:rwx -m u:drdjo:rwx app/cache app/logs # Le cas chant, n'utilisez pas les ACL, mais cela est moins scuris chmod 777 app/cache chmod 777 app/logs

Vrifiez votre configurationAllons-y, lancez un navigateur et rendez-vous cette adresse : http://localhost/config.php

L, c'est vous de jouer, gnralement il n'y a rien de compliqu. Soit Symfony vous crache dessus parce que vous avez mal configur les droits sur les dossiers de cache et de logs, ou alors il vous manque certaines extensions php. Dans ce dernier cas, vous de les activer correctement.

Regardons tout a de plus prsLa configuration est termine ? Qu'attendons-nous ? Rendons-nous immdiatement sur la page d'accueil du projet : http://localhost/app_dev.php/

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !

13/58

V ous remarquez forcement la prsence d'un bouton assez explicite : "Configurer", je vous suggre de cliquer dessus.

Le but est de renseigner les diffrentes informations sur votre systme de gestion de base de donnes Symfony via une interface web. Tout cela est bien videment aussi possible en ditant votre fichier parameters.ini situ dans le rpertoire app/config : Code : Autre [parameters] database_driver database_host database_port database_name database_user database_password mailer_transport mailer_host mailer_user mailer_password locale secret

= = = = = =

pdo_mysql localhost symfony root

= smtp = localhost = = = en = ThisTokenIsNotSoSecretChangeIt

Aprs une longue phase de tlchargement et d'installation, nous allons enfin pouvoir travailler ! Il est trs utile de travailler avec un systme de versionnement comme GIT. Si vous souhaitez versionner votre code pour le partager ou tout simplement avoir un historique de ce que vous faites, utilisez GIT. Si vous ne connaissez pas encore GIT, c'est l'occasion rve pour s'y mettre ! Mathieu Nebra (M@teo21) est l'auteur d'un bon tutoriel qui traite du sujet : Grez vos codes source avec Git

Un dernier nettoyageAfin de dmarrer tout a dans de bonnes conditions, je vous recommande fortement de faire un peu de mnage dans le projet

www.siteduzero.com

Dveloppez vos applications web avec Symfony2 !afin de supprimer la dmo. Il vous faut donc supprimer les sources de l'AcmeDemoBundle : Code : Console rm -rf src/Acme

14/58

Les ressources (images, css, javascripts) doivent eux aussi tre supprims : Code : Console rm -rf web/bundles/acmedemo

Ensuite, il faut enlever le bundle correspondant (s'il n'existe plus on ne va pas le charger Rendez-vous donc dans le fichier app/AppKernel.php et supprimez la ligne suivante : Code : PHP