SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
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 ?

Mais conteúdo relacionado

Mais procurados

.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
log file sous Netbeans et J2ME
log file sous Netbeans et J2MElog file sous Netbeans et J2ME
log file sous Netbeans et J2MEZied
 
Csharp1 : quelques elements de base
Csharp1 :  quelques elements de baseCsharp1 :  quelques elements de base
Csharp1 : quelques elements de baseAbdoulaye Dieng
 
Bases de php - Partie 3
Bases de php - Partie 3Bases de php - Partie 3
Bases de php - Partie 3Régis Lutter
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
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++Abdoulaye Dieng
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentationjulien pauli
 
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 JavaKorteby Farouk
 
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 promessesEric Toguem
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 

Mais procurados (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
 

Semelhante a Atelier symfony n 2

Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2Ahmed ABATAL
 
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éraleAbdelkader Rhouati
 
Atelier Symfony2- Introduction
Atelier Symfony2- IntroductionAtelier Symfony2- Introduction
Atelier Symfony2- IntroductionMarwa OUNALLI
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
#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 CodeIgniterAtsé François-Xavier KOBON
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overviewSymfonyMu
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système LinuxEL AMRI El Hassan
 
La Console Symfony
La Console Symfony La Console Symfony
La Console Symfony Imad ZAIRIG
 
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 webHouda TOUKABRI
 
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)Nicolas Defay
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravoSoumia Brabije
 
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.0Faiz Morchid
 

Semelhante a 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
 

Mais de Amir Souissi

Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsAmir Souissi
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptionsAmir Souissi
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfacesAmir Souissi
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
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 javaAmir Souissi
 
Chapitre 4 persistance des donnees
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donneesAmir Souissi
 
Chapitre 3 activites et intents
Chapitre 3   activites et  intentsChapitre 3   activites et  intents
Chapitre 3 activites et intentsAmir Souissi
 
Chapitre 2 elements graphiques android
Chapitre 2   elements graphiques androidChapitre 2   elements graphiques android
Chapitre 2 elements graphiques androidAmir Souissi
 
Chapitre 1 decouverte du developpement android
Chapitre 1  decouverte du developpement androidChapitre 1  decouverte du developpement android
Chapitre 1 decouverte du developpement androidAmir Souissi
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classeAmir Souissi
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objetAmir Souissi
 

Mais 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
 

Último

Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film françaisTxaruka
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 37
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24BenotGeorges3
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 37
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 

Último (18)

Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film français
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 

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 ?