SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
Institut Supérieur des Etudes Technologiques de Jendouba
Département Technologies de l’Informatique
2ème
année Licence Appliquée
Amir Souissi
Atelier Framework Web Côté Serveur
TP N° 2
Objectifs
• Découvrir l’architecture d’un projet Symfony et son principe de fonctionnement,
• Découvrir la structure des fichiers PHP sous Symfony (namespace, Class, use, …)
• Créer un Bundle et découvrir son architecture,
• Découvrir les Contrôleurs et les Routes.
1. Architecture des fichiers d’un Projet Symfony
Arborescence et principaux dossiers dans un projet Symfony :
2. Architecture Conceptuelle de Symfony
Le design pattern MVC utilisé par Symfony consiste à diviser notre application en 3 couches :
Le Modèle : s’occupe de tout ce qui touche aux données. Il s’occupe de l’interaction avec la BD :
Ajout, suppression, mise à jour ou lecture d’une données ainsi que vérifier l’intégrité des données.
La Vue : contient l’aspect visuel du site. Définit des gabarits de pages HTML dans lesquels on glisse
des données dynamiques.
Le Contrôleur : contient la logique de l’application. Il fait appel à la fois au modèle et la vue pour
restituer une réponse.
ACTIVITE 1 :
1. Déterminer le nom et l’emplacement du contrôleur par défaut créé dans un projet Symfony vide ?
…………………………………………………………………………………………………….
2. Déterminer l’emplacement de la page de démarrage de Symfony dans l’arborescence du projet ?
…………………………………………………………………………………………………….
3. PHP en Symfony
En Symfony, l’autoloading permet de charger une page PHP de manière automatique. Pour chaque
nouveau fichier PHP à créer ultérieurement, il faut respecter les contraintes suivantes :
• Le nom du fichier doit correspondre au nom de la classe qu’il contient.
• Chaque fichier PHP doit contenir un namespace. Le namespace doit correspondre à
l’arborescence du fichier dans le dossier src.
ACTIVITE 2 :
On désire créer un fichier conforme avec les conventions imposées par l’autoloading.
< ?php
namespace AppBundleScript ;
Class Test {
}
1. Quel est l’emplacement de ce fichier ? ………………………………………………………..
2. Comment doit s’appeler notre nouveau fichier ? ………………………………………………
3. Créer ce nouveau fichier dans son emplacement approprié.
ACTIVITE 3 :
<?php
namespace ………………………………………………………………………………………
use …………………………………………………………………………………………………………………………………………………………
class ……………………………………………………………………………… extends …………………………………………
{
public function indexAction()
{
}
}
1. Compléter le code de la page DefaultController.php pour qu’il soit conforme.
2. A quoi sert l’instruction use dans ce cas ? ………………………………………………………..
4. Les Bundles
Sous Symfony, tout est bundle. Il s’agit du Framework lui-même, du debugger, le moteur de rendu, …
Les bundles sont des briques logicielles que l’on peut assimiler à des plugins. Un bundle peut contenir
des contrôleurs, les vues, les modèles, de la configuration et également des fichiers de types js, css, .
En résumé tout le code rédigé dans Symfony se trouvera dans un bundle.
a. Créer un bundle par la console
Pour créer un nouveau bundle par la console, on suit les étapes suivantes :
1. Se placer sous la racine du projet Symfony. (Exemple : C:wampwwwTestSymfony1)
2. Taper la commande : php bin/console generate:bundle
3. Partager le Bundle pour le réutiliser à travers plusieurs applications : par défaut (No)
4. Nom du bundle : FrontBundle
5. Répertoire cible : par défaut (/src)
6. Format de configuration : par défaut (annotation)
Le nouveau bundle est créé : On peut le vérifier dans l’éditeur :
• Création d’un nouveau dossier FrontBundle sous /src avec un sous-dossier Controller et un
sous-dossier Resources.
• Le nouveau bundle est ajouté dans le noyau de Symfony pour qu’il soit chargé au démarrage.
On peut le vérifier dans le fichier AppKernel.php du dossier /app
• La configuration du Routing de notre bundle a été ajoutée dans le fichier Routing.yml du
dossier /app/config
b. Architecture d’un bundle
Le nouveau bundle créé contient :
1. Un dossier Controller. Il contiendra tous les Controller de notre bundle.
2. Un dossier Resources. Qui contient un sous-dossier Config : contient la configuration du
bundle, un sous-dossier Views qui contiendra les vues de notre bundle. Et finalement on a un
fichier FrontBundle.php qui représente notre bundle dans l’application Symfony.
3. Un contrôleur par défaut est généré par la ligne de commande DefaultController.php. on
supprime ce fichier pour avoir un bundle totalement vierge.
4. On supprime aussi le dossier Default du dossier FrontBundle/Resources/views
5. On obtient un bundle prêt à l’emploi.
ACTIVITE 4:
1. Créer un nouveau bundle nommé BackBundle
2. Faites que ce bundle soit vierge et prêt à l’emploi
5. Créer une page : Route et Contrôleur
Pour afficher une page, il nous faut 3 parties :
- Un Contrôleur
- Une action de contrôleur
- Une vue
Dans un Bundle, les contrôleurs se trouvent dans le Répertoire Controller du Bundle.
Un Contrôleur est une Classe PHP. A l’intérieur du cette classe, on peut définir des actions
qui nous permettrons de relier des fonctionnements pour faire des affichages.
Il est conseillé de regrouper les fonctionnalités communes par Contrôleur (gestion des
factures, gestion des utilisateurs, …)
Pour que le contrôleur soit utilisable, il manque l’étape de Routing. Le Routing est un élément dans
Symfony qui fait la correspondance entre une URL et un Controller.
ACTIVITE 5:
On désire créer notre propre Contrôleur. Lorsqu’on se pointe sur /hello, on veut générer une
page qui affiche le mot « Hello World ! ».
1. Créer un nouveau fichier nommé HelloController.php sous AppBundle/Controller.
2. Taper le code de ce Contrôleur :
<?php
namespace ………………………………………………………………………;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAnnotationRoute;
class …………………………………………………………………………………
{
/**
* @Route("/hello")
*/
public function MonAction1()
{
return new Response(
'<html> <body> Hello World ! </body> </html>'
);
}
}
3. Visualiser le contenu de votre page en ajoutant l’URL :
http://localhost/TestSymfony1/web/app_dev.php/hello
4. Ajouter une deuxième action nommée MonAction2 qui permet d’afficher la page
contenant « Bonjour ! » lorsqu’on se pointe sur l’URL :
http://localhost/TestSymfony1/web/app_dev.php/bonjour
5. Quel est l’annotation de la route qu’il faut ajouter au-dessus de l’action 2 ?
…………………………………………………………………………………………
6. Trouver le chemin du dossier général de configuration des Routes en Annotation.
…………………………………………………………………………………………
7. Modifier ces Routes de manière à ce qu’ils deviennent : /hello/fr et /hello/en
8. Quel est la différence entre l’utilisation de app.php et app_dev.php ?

Contenu connexe

Tendances

Les nouveautés de java 7 et les promesses
Les nouveautés de java 7  et les promessesLes nouveautés de java 7  et les promesses
Les nouveautés de java 7 et les promesses
Eric Toguem
 

Tendances (20)

.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Les listes en Python
Les listes en PythonLes listes en Python
Les listes en Python
 
log file sous Netbeans et J2ME
log file sous Netbeans et J2MElog file sous Netbeans et J2ME
log file sous Netbeans et J2ME
 
Tp n 1 linux
Tp n 1 linuxTp n 1 linux
Tp n 1 linux
 
Csharp1 : quelques elements de base
Csharp1 :  quelques elements de baseCsharp1 :  quelques elements de base
Csharp1 : quelques elements de base
 
Bases de php - Partie 3
Bases de php - Partie 3Bases de php - Partie 3
Bases de php - Partie 3
 
Introduction au Jquery
Introduction au JqueryIntroduction au Jquery
Introduction au Jquery
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++
 
Cours php
Cours phpCours php
Cours php
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentation
 
Le système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaLe système d&rsquo;E/S en Java
Le système d&rsquo;E/S en Java
 
Formation python 3
Formation python 3Formation python 3
Formation python 3
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 
Les nouveautés de java 7 et les promesses
Les nouveautés de java 7  et les promessesLes nouveautés de java 7  et les promesses
Les nouveautés de java 7 et les promesses
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 

Similaire à Atelier symfony n 2

Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2
Ahmed ABATAL
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
Atsé François-Xavier KOBON
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système Linux
EL AMRI El Hassan
 
Creation de template_joomla_2.5_-_v_1.0
Creation de template_joomla_2.5_-_v_1.0Creation de template_joomla_2.5_-_v_1.0
Creation de template_joomla_2.5_-_v_1.0
Faiz Morchid
 

Similaire à Atelier symfony n 2 (20)

Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation Générale
 
Atelier Symfony2- Introduction
Atelier Symfony2- IntroductionAtelier Symfony2- Introduction
Atelier Symfony2- Introduction
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
Framework php « Codeignitor »
Framework php « Codeignitor » Framework php « Codeignitor »
Framework php « Codeignitor »
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overview
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système Linux
 
La Console Symfony
La Console Symfony La Console Symfony
La Console Symfony
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Outils front-end
Outils front-endOutils front-end
Outils front-end
 
Optimiser son environnement de développement PHP (Tuto NetBeans v4.4)
Optimiser son environnement de développement PHP (Tuto NetBeans v4.4)Optimiser son environnement de développement PHP (Tuto NetBeans v4.4)
Optimiser son environnement de développement PHP (Tuto NetBeans v4.4)
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravo
 
Creation de template_joomla_2.5_-_v_1.0
Creation de template_joomla_2.5_-_v_1.0Creation de template_joomla_2.5_-_v_1.0
Creation de template_joomla_2.5_-_v_1.0
 
Présentation1
Présentation1Présentation1
Présentation1
 
Snort implementation
Snort implementationSnort implementation
Snort implementation
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 

Plus de Amir Souissi

introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
Amir Souissi
 

Plus de Amir Souissi (13)

Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 
Chapitre 4 persistance des donnees
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donnees
 
Chapitre 3 activites et intents
Chapitre 3   activites et  intentsChapitre 3   activites et  intents
Chapitre 3 activites et intents
 
Chapitre 2 elements graphiques android
Chapitre 2   elements graphiques androidChapitre 2   elements graphiques android
Chapitre 2 elements graphiques android
 
Chapitre 1 decouverte du developpement android
Chapitre 1  decouverte du developpement androidChapitre 1  decouverte du developpement android
Chapitre 1 decouverte du developpement android
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
 

Dernier

Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
ssuserc72852
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 

Dernier (20)

Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfSTRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 

Atelier symfony n 2

  • 1. Institut Supérieur des Etudes Technologiques de Jendouba Département Technologies de l’Informatique 2ème année Licence Appliquée Amir Souissi Atelier Framework Web Côté Serveur TP N° 2 Objectifs • Découvrir l’architecture d’un projet Symfony et son principe de fonctionnement, • Découvrir la structure des fichiers PHP sous Symfony (namespace, Class, use, …) • Créer un Bundle et découvrir son architecture, • Découvrir les Contrôleurs et les Routes. 1. Architecture des fichiers d’un Projet Symfony Arborescence et principaux dossiers dans un projet Symfony : 2. Architecture Conceptuelle de Symfony
  • 2. Le design pattern MVC utilisé par Symfony consiste à diviser notre application en 3 couches : Le Modèle : s’occupe de tout ce qui touche aux données. Il s’occupe de l’interaction avec la BD : Ajout, suppression, mise à jour ou lecture d’une données ainsi que vérifier l’intégrité des données. La Vue : contient l’aspect visuel du site. Définit des gabarits de pages HTML dans lesquels on glisse des données dynamiques. Le Contrôleur : contient la logique de l’application. Il fait appel à la fois au modèle et la vue pour restituer une réponse. ACTIVITE 1 : 1. Déterminer le nom et l’emplacement du contrôleur par défaut créé dans un projet Symfony vide ? ……………………………………………………………………………………………………. 2. Déterminer l’emplacement de la page de démarrage de Symfony dans l’arborescence du projet ? ……………………………………………………………………………………………………. 3. PHP en Symfony En Symfony, l’autoloading permet de charger une page PHP de manière automatique. Pour chaque nouveau fichier PHP à créer ultérieurement, il faut respecter les contraintes suivantes : • Le nom du fichier doit correspondre au nom de la classe qu’il contient. • Chaque fichier PHP doit contenir un namespace. Le namespace doit correspondre à l’arborescence du fichier dans le dossier src. ACTIVITE 2 : On désire créer un fichier conforme avec les conventions imposées par l’autoloading. < ?php namespace AppBundleScript ; Class Test { } 1. Quel est l’emplacement de ce fichier ? ……………………………………………………….. 2. Comment doit s’appeler notre nouveau fichier ? ……………………………………………… 3. Créer ce nouveau fichier dans son emplacement approprié. ACTIVITE 3 : <?php namespace ……………………………………………………………………………………… use ………………………………………………………………………………………………………………………………………………………… class ……………………………………………………………………………… extends ………………………………………… { public function indexAction() { } } 1. Compléter le code de la page DefaultController.php pour qu’il soit conforme. 2. A quoi sert l’instruction use dans ce cas ? ………………………………………………………..
  • 3. 4. Les Bundles Sous Symfony, tout est bundle. Il s’agit du Framework lui-même, du debugger, le moteur de rendu, … Les bundles sont des briques logicielles que l’on peut assimiler à des plugins. Un bundle peut contenir des contrôleurs, les vues, les modèles, de la configuration et également des fichiers de types js, css, . En résumé tout le code rédigé dans Symfony se trouvera dans un bundle. a. Créer un bundle par la console Pour créer un nouveau bundle par la console, on suit les étapes suivantes : 1. Se placer sous la racine du projet Symfony. (Exemple : C:wampwwwTestSymfony1) 2. Taper la commande : php bin/console generate:bundle 3. Partager le Bundle pour le réutiliser à travers plusieurs applications : par défaut (No) 4. Nom du bundle : FrontBundle 5. Répertoire cible : par défaut (/src) 6. Format de configuration : par défaut (annotation) Le nouveau bundle est créé : On peut le vérifier dans l’éditeur : • Création d’un nouveau dossier FrontBundle sous /src avec un sous-dossier Controller et un sous-dossier Resources. • Le nouveau bundle est ajouté dans le noyau de Symfony pour qu’il soit chargé au démarrage. On peut le vérifier dans le fichier AppKernel.php du dossier /app • La configuration du Routing de notre bundle a été ajoutée dans le fichier Routing.yml du dossier /app/config b. Architecture d’un bundle Le nouveau bundle créé contient : 1. Un dossier Controller. Il contiendra tous les Controller de notre bundle. 2. Un dossier Resources. Qui contient un sous-dossier Config : contient la configuration du bundle, un sous-dossier Views qui contiendra les vues de notre bundle. Et finalement on a un fichier FrontBundle.php qui représente notre bundle dans l’application Symfony. 3. Un contrôleur par défaut est généré par la ligne de commande DefaultController.php. on supprime ce fichier pour avoir un bundle totalement vierge. 4. On supprime aussi le dossier Default du dossier FrontBundle/Resources/views 5. On obtient un bundle prêt à l’emploi. ACTIVITE 4: 1. Créer un nouveau bundle nommé BackBundle 2. Faites que ce bundle soit vierge et prêt à l’emploi
  • 4. 5. Créer une page : Route et Contrôleur Pour afficher une page, il nous faut 3 parties : - Un Contrôleur - Une action de contrôleur - Une vue Dans un Bundle, les contrôleurs se trouvent dans le Répertoire Controller du Bundle. Un Contrôleur est une Classe PHP. A l’intérieur du cette classe, on peut définir des actions qui nous permettrons de relier des fonctionnements pour faire des affichages. Il est conseillé de regrouper les fonctionnalités communes par Contrôleur (gestion des factures, gestion des utilisateurs, …) Pour que le contrôleur soit utilisable, il manque l’étape de Routing. Le Routing est un élément dans Symfony qui fait la correspondance entre une URL et un Controller. ACTIVITE 5: On désire créer notre propre Contrôleur. Lorsqu’on se pointe sur /hello, on veut générer une page qui affiche le mot « Hello World ! ». 1. Créer un nouveau fichier nommé HelloController.php sous AppBundle/Controller. 2. Taper le code de ce Contrôleur : <?php namespace ………………………………………………………………………; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAnnotationRoute; class ………………………………………………………………………………… { /** * @Route("/hello") */ public function MonAction1() { return new Response( '<html> <body> Hello World ! </body> </html>' ); } } 3. Visualiser le contenu de votre page en ajoutant l’URL : http://localhost/TestSymfony1/web/app_dev.php/hello 4. Ajouter une deuxième action nommée MonAction2 qui permet d’afficher la page contenant « Bonjour ! » lorsqu’on se pointe sur l’URL : http://localhost/TestSymfony1/web/app_dev.php/bonjour 5. Quel est l’annotation de la route qu’il faut ajouter au-dessus de l’action 2 ? ………………………………………………………………………………………… 6. Trouver le chemin du dossier général de configuration des Routes en Annotation. ………………………………………………………………………………………… 7. Modifier ces Routes de manière à ce qu’ils deviennent : /hello/fr et /hello/en 8. Quel est la différence entre l’utilisation de app.php et app_dev.php ?