26
1

Symfony 2 : chapitre 1 - Présentation Générale

Embed Size (px)

DESCRIPTION

Premier chapitre d'une formation Symfony 2, l'Objectif de ce chapitre peut se résumer dans les points suivants : - Présentation du framework Symfony en sa version 2.x - Première installation de Symfony, et découvert de son arborescence projet - Notion des Bundles : Notion de contrôleur et Vue + Réalisation d'un premier contrôleur - Système des Routes : utilisation des annotations pour définir des routes

Citation preview

Page 1: Symfony 2 : chapitre 1 - Présentation Générale

1

Page 2: Symfony 2 : chapitre 1 - Présentation Générale

2Symfony 2.0

ABDELKADER RHOUATI [email protected] SF 2.0 - 2013

Page 3: Symfony 2 : chapitre 1 - Présentation Générale

3

Chapitre 1 : Vue d'ensemble de Symfony 2

Page 4: Symfony 2 : chapitre 1 - Présentation Générale

4Symfony 2, un Framework PHP

Symfony2 est un Framework PHP open source , c' est-à-dire une boite à outils faite en PHP dans but de vous simplifier le développement des applications et sites web.

Un Framework Français créé par la société SensioLab, en sa première version sortie en 2005

Une communauté active qui utilise le framework et qui contribue en retour

Une documentation de qualité et régulièrement mise à jour Un code source maintenu par des développeurs attitrés Un code qui respecte les standards de programmation Un support à long terme garanti et des mises à jour qui ne cassent pas

la compatibilité

Page 5: Symfony 2 : chapitre 1 - Présentation Générale

5Télécharger Symfony 2.2 Disponible sur le lien : http://symfony.com/download

Deux options de téléchargement :1. Version " without vendors" . Les librairies tierces seront ainsi

téléchargées via Git en exécutant le script « bin/vendors » situé dans l'archiveexécutez la commande : php bin/vendors install

2. Version simple, avec les vendors, pour avoir toutes les librairies incluses

Page 6: Symfony 2 : chapitre 1 - Présentation Générale

6Première Installation 1/3

Décompressez les fichiers dans votre répertoire web habituel, par exemple "C:\wamp\www" pour Windows

Vérifier votre configuration PHP en accédant à l’url : « http://localhost/symfony/web/config.php »

Page 7: Symfony 2 : chapitre 1 - Présentation Générale

7Première Installation 2/3

Configuration de votre instance Symfony : http://localhost/symfony/web/app_dev.php/

_configurator

Configuration en deux étapes :1. Données d’accès à la base de donnée2. Génération d’un hashcode utilisé pour des raisons de

sécurités

Page 8: Symfony 2 : chapitre 1 - Présentation Générale

8Première Installation 3/3 C’est bon ! Vous pouvez maintenant vous connecter à votre

premier application Symfony 2 : http://localhost/symfony/web/app_dev.php/

Page 9: Symfony 2 : chapitre 1 - Présentation Générale

9Arborescence des fichiers 4 principaux répertoires :

1. app/ : Contient les fichiers des applications sauf le code source, notamment; la configuration, le cache, les fichiers logs etc...

2. vendor/ : contient toutes les librairies externes, comme Doctrine, Twig, Swiftmailer…

3. Web/ : Ce répertoire contient tous les fichiers destinés aux visiteurs : images , fichiers CSS et JavaScript … Il contient également le contrôleur frontal (app.php), dont nous parlerons après. (NB: c’est le seul repertoire qui doit être accessible par les internautes)

4. src/ : contient le code source des applications organisé sous forme de bundles (par défaut il contient un bundle d’exemple fourni par Symfony)

Page 10: Symfony 2 : chapitre 1 - Présentation Générale

10

Symfony et MVC 2

Page 11: Symfony 2 : chapitre 1 - Présentation Générale

11La notion de « Bundle »

Un bundle est une brique de votre application, permet de regrouper toutes les ressources

Quel intérêt ? E n plus d' organiser votre code par fonctionnalité, la découpe en

bundles permet l'échange de bundles entre applications ! Cela signifie que vous pouvez développer une fonctionnalité, puis la partager avec d'autres développeurs ou encore la réutiliser dans un de vos autres projets. Et de même utiliser des bundles d’autre développeurs

Dans Symfony2, chaque partie de votre site est un bundle

Les Bundles de la communauté : http://knpbundles.com/

Page 12: Symfony 2 : chapitre 1 - Présentation Générale

12Créer un « Bundle »

Dans la racine de Symfony, taper la commande :php app/console generate:bundle

Ensuite suivre les étapes sur la consoles

Page 13: Symfony 2 : chapitre 1 - Présentation Générale

Créer un « Bundle »13

Générer un bundle en ligne de commande 

Page 14: Symfony 2 : chapitre 1 - Présentation Générale

14

Structure d’un bundle Controller/ : Contient les contrôleurs DependencyInjection/ : les informations

sur votre bundles Ressources/

--- config/ : Contient les fichier de configuration, notamment les routes

--- doc/ : contient la documentation--- public/ : Contient les fichiers publics de

votre bundle : fichiers CSS et JavaScript, images, etc

--- translations/ --- views / : Contient les vues de notre bundle

( les templates Twig ) Tests/ : Contient vos éventuels tests

unitaires et fonctionnels.

Page 15: Symfony 2 : chapitre 1 - Présentation Générale

Bundle : Controller et View 1

5

Récupère les informations http Renvois la réponse. Contient la logique de l’application. Considéré comme chef d’orchestre qui fait la liaison entre tous les éléments.

Afficher le résultat de l’ action Assurer la séparation entre le code HTML et le code PHP, Utilisation du moteur de template Twig.

Page 16: Symfony 2 : chapitre 1 - Présentation Générale

Créer un Bundle16Actions et Vues

Page 17: Symfony 2 : chapitre 1 - Présentation Générale

Manipuler les variables envoyées en POST et/ou GET

Récupérer l ' objet Request depuis notre contrôleur

Utiliser l’objet pour récupérer les variables GET et/ou POSTGET : $request->query->get(‘nom_variable’)POST : $request->request>get(‘nom_variable’)

Et Aussi les Cookies : $request->cookies->get(‘nom_variable’)

Pour les sessions :$session = $this->get('session');$session->get('user_id')

17

Page 18: Symfony 2 : chapitre 1 - Présentation Générale

18

La configuration : Système d’annotation

Plusieurs possibilité : yml, xml et annotation L’annotation est le moyen le plus rapide et simple pour des

projets de petite et moyenne taille

Comment ça marche ?

Commentaire du genre :@MotCles(Valeur2, Valeur2…)

Page 19: Symfony 2 : chapitre 1 - Présentation Générale

19

Les Routes en Symfony Les routes en Symfony2 déterminent quel contrôleur exécuter

en fonction de l’URL appelé par l’internaute

Annotation à ajouter au niveau des classes PHP des contrôleurs

@Route([URL], [Param 1], [Param 2]… )

Important : n’oublier pas d’appeler la classe Route par le namespace suivant

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route

Page 20: Symfony 2 : chapitre 1 - Présentation Générale

20

Les routes : Règles 1/6

Declarer une route simple pour un contrôleur

Page 21: Symfony 2 : chapitre 1 - Présentation Générale

21

Les routes : Règles 2/6 Pour chaque route on peut definer :

1. /{nom_variable} à passer en paramètre de la méthode2. requierements={“nom_variable” = [expression régulière]}3. defaults={“nom_variable” = “”valeur par defaut}

Page 22: Symfony 2 : chapitre 1 - Présentation Générale

22

Les routes : Règles 3/6 Il est aussi possible de définir plusieurs URL’s au même

controleur

Page 23: Symfony 2 : chapitre 1 - Présentation Générale

23

Les routes : Règles 4/6

Important : Pour que Symfony prend en compte les annotations de routes définis dans le contrôleur, il faut l’activer en ajouter les lignes suivantes au fichier de config “app/config/routing.yml”

Par fichier :

Par répertoire

Page 24: Symfony 2 : chapitre 1 - Présentation Générale

24

Les routes : Règles 5/6 Définir pour chaque contrôleur un prefix d’urlLors de l’activation

Au niveau du fichier

Page 25: Symfony 2 : chapitre 1 - Présentation Générale

25

Les routes : Règles 6/6 Définir un nom pour chaque route , cela peut être

utiliser pour générer des liens dans les vues

Chaque route peut correspondre à une methode GET ou POST ou les deux

Page 26: Symfony 2 : chapitre 1 - Présentation Générale

26

Symfony Possède un système de cache

Pensez à vider le cache, des fois il suffit de le faire pour votre code fonctionne correctement :

php app/console cache:clear