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° 3
Objectifs
• Comprendre la correspondance entre URL et Controller à travers le Routing,
• Configurer les Routes en YAML et par les annotations,
• Créer une Route avec des paramètres, leurs contraintes et leurs valeurs par défaut.
Le Routing est un élément dans Symfony qui fait la correspondance entre une URL et un Controller.
Ainsi, pour utiliser un Controller, on a besoin de lui assigner une Route.
1. Création d’une route en format YAML
Une Route fait la correspondance entre une URL et le contrôleur à appeler. Le fichier
app/config/routing.yml est un fichier de mapping des routes (un fichier de correspondance).
Dans ce fichier, la configuration de base d’une Route se présente de la manière suivante :
Nom_Route :
path : …………………
defaults : {_controller : …………………… }
la valeur de _controller correspond au Contrôleur selon la convention suivante :
_controller : BackBundle:Blog:accueil
Avec BackBundle est le nom du Bundle dans lequel se trouve la controller
Blog correspond au nom du controleur BlogController ( suffixé par le mot Contoller)
accueil correspond au nom de l’action acceuilAction (suffixé du mot Action)
ACTIVITE 1 :
1. Ajouter la route suivante dans le fichier de configuration des Routes :
back_accueil:
path: '/blog/article'
defaults: { _controller: BackBundle:Blog:accueil }
2. Ajouter le code suivant dans son emplacement approprié :
<?php
// src/BackBundle/Controller/BlogController.php
namespace BackBundleController;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationResponse;
class BlogController extends Controller
{ public function accueilAction ()
{
return new Response(
'<html><body> page Accueil du Blog </body></html>'
);
}
}
3. Quelle est l’URL absolue qui fait apparaitre la page d’accueil du blog.
…………………………………………………………………………………………………….
4. Créer une autre Route qui permet de faire la correspondance de l’URL suivante
'/blog/nouveau' avec une action ajouterAction du BlogController. La page affiché permet
d’ajouter un article au blog.
2. Création d’une route en format annotations
Depuis Symfony 3 on préconise l’utilisation des annotations pour définir des Routes. Les annotations
sont un moyen de configuration qui se place dans les commentaires des fichiers PHP.
Avec les annotations, on peut définir les Routes directement au-dessus des méthodes (des actions) des
Contrôleurs. (Tout est dans le même endroit).
<?php
namespace AppBundleController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationRequest;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
// replace this example code with whatever you need
return $this->render('default/index.html.twig' , [base_dir' => realpath($this-
>getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
]);
}
}
Dans le fichier routing.yml
app:
resource: '@AppBundle/Controller/'
type: annotation
La Route qu’il faut spécifier dans l’annotation doit prendre la forme suivante :
@Route("path (url)", name="nom de la route")
ACTIVITE 2 :
1. Créer un nouveau Controller dans AppBundle nommé : MyController dans lequel vous allez
copier le code du DefaulController.php
2. MyController doit contenir une action MyAction qui permet d’afficher une page HTML située
dans le dossier des Vues de Symfony (/app/Resources/Views) et nommée MyPage.html
3. Définir une Route qui permet d’afficher cette page lorsque l’on se place à l’URL suivante :
localhost/TestSymfony1/web/app_dev.php/Essai/Affichage
ACTIVITE 3 :
1. Dans un nouveau Bundle (BackBundle par exemple), créer une action d’affichage du texte
« Page du BackBundle » câblée sur la Route « /» dans le contrôleur par défaut de ce bundle.
2. Dans le Bundle par défaut (AppBundle de Symfony), vérifier que l’affichage de la page de
démarrage de Symfony est cablée sur la Route « / » aussi.
3. Ainsi, nous avons deux routes identiques dans deux bundles différents sans conflit. Au
chargement de l’URL racine « / » (localhost/TestSymfony1/web/app_dev.php), qu’elle est la
route la plus prioritaire ?
………………………………………………………………………………………………..
4. Modifiez cette priorité en modifiant l’ordre des imports dans /app/config/routing.yml puis
vérifiez la différence à l’affichage.
3. Création d’une route avec des paramètres et des contraintes
On peut ajouter un paramètre dans le path d’une route.
/**
*@Route(path="/{id}")
*/
public function xxxxAction($id)
{ …………………………………………… }
Grâce au paramètre {id}, toutes les url de type /* seront gérées par cette route.
Exemples : web/app_dev/blog/article/5
web/app_dev/blog/article/654
web/app_dev/blog/article/abcd ({id} peut ne pas être un nombre)
ACTIVITE 4 :
1. Compléter le code suivant pour afficher la valeur du paramètre depuis la méthode du Controller.
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAnnotationRoute;
. . .
/**
* @Route("/blog/article/{id}")
*/
public function voirAction ($id)
{
return new Response(
"affichage de l'article qui a un id = ".$id);
}
2. Tester avec plusieurs URL en modifiant la valeur du paramètre ?
On peut ajouter une contrainte sur les paramètres de l’URL en ajoutant les sections requirements et
defaults dans la définition de la Route.
La section requirements permet d’ajouter une contrainte exprimée en expression régulière.
Exemple : d exige que le paramètre soit un seul chiffre.
d+ exige que le paramètre soit un ou plusieurs chiffres.
d{4} exige que le paramètre soit exactement 4 chiffres à la suite.
A | B exige que le paramètre soit A ou B.
Les paramètres sont par défaut obligatoires. La section defaults permet de les rendre
facultatifs.
Lorsqu’on ne renseigne pas la valeur d’un paramètre, c’est sa valeur par défaut qui sera
interceptée. Il devient ainsi facultatif.
ACTIVITE 5 :
/**
*@Route(path="/blog/article/{id}",
requirements={"id"="d+"})
*/
1. Utiliser la Route ci-dessus pour la câbler sur l’action voirAction ($id) de BlogController.
2. Modifier cette Route pour que le paramètre de l’URL soit un seul chiffre.
3. Modifier cette Route pour que le paramètre soit facultatif.
ACTIVITE 6:
Soit le code de la méthode voirSlugAction ($slug, $annee, $format) de BlogController.
public function voirSlugAction ($slug, $annee, $format)
{
return new Response ( "Affichage de l'article correspondant au slug
".$slug."créé à l'année ".$annee."et au format ".$format
);
}
1. Déterminer la Route à configurer pour intercepter les URL de la forme :
/blog/2018/mon-weekend.html ou /blog/2017/symphony.xml
Il faut que l’année {annee} soit sur 4 chiffres exactement.
Le format de la page {format} doit être seulement en html ou en xml.
2. Modifier cette Route de manière à ce que la valeur par défaut du paramètre {format} soit html.
3. Compléter ainsi la configuration suivante de la Route :
/**
*@Route(path="/blog/………………………………………………………………………………………………………… ,
requirements={…………………………………………………………, ……………………………………………………………},
defaults= {………………………………………………………}
)
*/

Contenu connexe

Tendances

Nouveautés dans TYPO3 CMS 6.0
Nouveautés dans TYPO3 CMS 6.0Nouveautés dans TYPO3 CMS 6.0
Nouveautés dans TYPO3 CMS 6.0Idéative
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epitaNoel GUILBERT
 
Bases de php - Partie 3
Bases de php - Partie 3Bases de php - Partie 3
Bases de php - Partie 3Régis Lutter
 
Symfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigSymfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigAbdelkader Rhouati
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation SymfonyJeremy Gachet
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentationjulien pauli
 
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
 
log file sous Netbeans et J2ME
log file sous Netbeans et J2MElog file sous Netbeans et J2ME
log file sous Netbeans et J2MEZied
 
[DRAFT] Utiliser VmWare pour l'installation d'un Alfresco
[DRAFT] Utiliser VmWare pour l'installation d'un Alfresco[DRAFT] Utiliser VmWare pour l'installation d'un Alfresco
[DRAFT] Utiliser VmWare pour l'installation d'un AlfrescoPASCAL Jean Marie
 
eServices-Tp5: api management
eServices-Tp5: api managementeServices-Tp5: api management
eServices-Tp5: api managementLilia Sfaxi
 
Procédure de configuration et préparation de l’environnement sous windows
Procédure de configuration et préparation de l’environnement sous windowsProcédure de configuration et préparation de l’environnement sous windows
Procédure de configuration et préparation de l’environnement sous windowsAddi Ait-Mlouk
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancertarkaus
 
T3UNIFR12 - Réussir sa mise à jour de typo3
T3UNIFR12 - Réussir sa mise à jour de typo3T3UNIFR12 - Réussir sa mise à jour de typo3
T3UNIFR12 - Réussir sa mise à jour de typo3sitengo
 
"Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?""Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?"o2sources
 

Tendances (20)

Nouveautés dans TYPO3 CMS 6.0
Nouveautés dans TYPO3 CMS 6.0Nouveautés dans TYPO3 CMS 6.0
Nouveautés dans TYPO3 CMS 6.0
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epita
 
Bases de php - Partie 3
Bases de php - Partie 3Bases de php - Partie 3
Bases de php - Partie 3
 
Symfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigSymfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en Twig
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation Symfony
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentation
 
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
 
log file sous Netbeans et J2ME
log file sous Netbeans et J2MElog file sous Netbeans et J2ME
log file sous Netbeans et J2ME
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
[DRAFT] Utiliser VmWare pour l'installation d'un Alfresco
[DRAFT] Utiliser VmWare pour l'installation d'un Alfresco[DRAFT] Utiliser VmWare pour l'installation d'un Alfresco
[DRAFT] Utiliser VmWare pour l'installation d'un Alfresco
 
#7 Migration
#7 Migration#7 Migration
#7 Migration
 
eServices-Tp5: api management
eServices-Tp5: api managementeServices-Tp5: api management
eServices-Tp5: api management
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 
Procédure de configuration et préparation de l’environnement sous windows
Procédure de configuration et préparation de l’environnement sous windowsProcédure de configuration et préparation de l’environnement sous windows
Procédure de configuration et préparation de l’environnement sous windows
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancer
 
T3UNIFR12 - Réussir sa mise à jour de typo3
T3UNIFR12 - Réussir sa mise à jour de typo3T3UNIFR12 - Réussir sa mise à jour de typo3
T3UNIFR12 - Réussir sa mise à jour de typo3
 
Cours php
Cours php Cours php
Cours php
 
"Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?""Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?"
 

Similaire à Atelier symfony n 3

laravel.sillo.org-Cours Laravel 10 les bases artisan et les contrôleurs_2.pdf
laravel.sillo.org-Cours Laravel 10  les bases  artisan et les contrôleurs_2.pdflaravel.sillo.org-Cours Laravel 10  les bases  artisan et les contrôleurs_2.pdf
laravel.sillo.org-Cours Laravel 10 les bases artisan et les contrôleurs_2.pdfHeartKing10
 
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
laravel.sillo.org-Cours Laravel 10  les bases  la validation.pdflaravel.sillo.org-Cours Laravel 10  les bases  la validation.pdf
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdfHeartKing10
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
 
#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
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database ConnectivityKorteby Farouk
 
Présentation de EasyAdmin, le bundle d'admin de Symfony
Présentation de EasyAdmin, le bundle d'admin de SymfonyPrésentation de EasyAdmin, le bundle d'admin de Symfony
Présentation de EasyAdmin, le bundle d'admin de SymfonyRaphaël Kueny
 
PowerShell - Retours d'expériences
PowerShell - Retours d'expériencesPowerShell - Retours d'expériences
PowerShell - Retours d'expériencesRan Mellul
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec JavaFrancois ANDRE
 
cours-gratuit.com--id-12477.pdf
cours-gratuit.com--id-12477.pdfcours-gratuit.com--id-12477.pdf
cours-gratuit.com--id-12477.pdfssuser192642
 

Similaire à Atelier symfony n 3 (20)

Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
laravel.sillo.org-Cours Laravel 10 les bases artisan et les contrôleurs_2.pdf
laravel.sillo.org-Cours Laravel 10  les bases  artisan et les contrôleurs_2.pdflaravel.sillo.org-Cours Laravel 10  les bases  artisan et les contrôleurs_2.pdf
laravel.sillo.org-Cours Laravel 10 les bases artisan et les contrôleurs_2.pdf
 
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
laravel.sillo.org-Cours Laravel 10  les bases  la validation.pdflaravel.sillo.org-Cours Laravel 10  les bases  la validation.pdf
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
 
Chapitre-3-Routage.pdf
Chapitre-3-Routage.pdfChapitre-3-Routage.pdf
Chapitre-3-Routage.pdf
 
Chapitre-3-Routage.pdf
Chapitre-3-Routage.pdfChapitre-3-Routage.pdf
Chapitre-3-Routage.pdf
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
 
test
testtest
test
 
Cours 2 les composants
Cours 2 les composantsCours 2 les composants
Cours 2 les composants
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
#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
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Angular 11
Angular 11Angular 11
Angular 11
 
Présentation de EasyAdmin, le bundle d'admin de Symfony
Présentation de EasyAdmin, le bundle d'admin de SymfonyPrésentation de EasyAdmin, le bundle d'admin de Symfony
Présentation de EasyAdmin, le bundle d'admin de Symfony
 
PowerShell - Retours d'expériences
PowerShell - Retours d'expériencesPowerShell - Retours d'expériences
PowerShell - Retours d'expériences
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec Java
 
cours-gratuit.com--id-12477.pdf
cours-gratuit.com--id-12477.pdfcours-gratuit.com--id-12477.pdf
cours-gratuit.com--id-12477.pdf
 
Spring Ioc.pdf
Spring Ioc.pdfSpring Ioc.pdf
Spring Ioc.pdf
 
Cours 1 introduction
Cours 1 introductionCours 1 introduction
Cours 1 introduction
 

Plus 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 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir 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
 

Plus de Amir Souissi (18)

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 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
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
 
Tp n 6 linux
Tp n 6 linuxTp n 6 linux
Tp n 6 linux
 
Tp n 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 linux
 
Tp n 4 linux
Tp n 4 linuxTp n 4 linux
Tp n 4 linux
 
Tp n 1 linux
Tp n 1 linuxTp n 1 linux
Tp n 1 linux
 
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

SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
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
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
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
 
Pharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour PharmaciePharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour PharmacieLoloshka
 
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
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...NaimDoumissi
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationpapediallo3
 
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
 
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
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
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
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
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
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
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
 
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
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 

Dernier (20)

SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
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
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
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
 
Pharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour PharmaciePharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour Pharmacie
 
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
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'information
 
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)
 
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...
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
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
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 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
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.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
 
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
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 

Atelier symfony n 3

  • 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° 3 Objectifs • Comprendre la correspondance entre URL et Controller à travers le Routing, • Configurer les Routes en YAML et par les annotations, • Créer une Route avec des paramètres, leurs contraintes et leurs valeurs par défaut. Le Routing est un élément dans Symfony qui fait la correspondance entre une URL et un Controller. Ainsi, pour utiliser un Controller, on a besoin de lui assigner une Route. 1. Création d’une route en format YAML Une Route fait la correspondance entre une URL et le contrôleur à appeler. Le fichier app/config/routing.yml est un fichier de mapping des routes (un fichier de correspondance). Dans ce fichier, la configuration de base d’une Route se présente de la manière suivante : Nom_Route : path : ………………… defaults : {_controller : …………………… } la valeur de _controller correspond au Contrôleur selon la convention suivante : _controller : BackBundle:Blog:accueil Avec BackBundle est le nom du Bundle dans lequel se trouve la controller Blog correspond au nom du controleur BlogController ( suffixé par le mot Contoller) accueil correspond au nom de l’action acceuilAction (suffixé du mot Action) ACTIVITE 1 : 1. Ajouter la route suivante dans le fichier de configuration des Routes : back_accueil: path: '/blog/article' defaults: { _controller: BackBundle:Blog:accueil } 2. Ajouter le code suivant dans son emplacement approprié : <?php // src/BackBundle/Controller/BlogController.php namespace BackBundleController; use SymfonyBundleFrameworkBundleControllerController; use SymfonyComponentHttpFoundationResponse; class BlogController extends Controller { public function accueilAction () { return new Response( '<html><body> page Accueil du Blog </body></html>' ); } }
  • 2. 3. Quelle est l’URL absolue qui fait apparaitre la page d’accueil du blog. ……………………………………………………………………………………………………. 4. Créer une autre Route qui permet de faire la correspondance de l’URL suivante '/blog/nouveau' avec une action ajouterAction du BlogController. La page affiché permet d’ajouter un article au blog. 2. Création d’une route en format annotations Depuis Symfony 3 on préconise l’utilisation des annotations pour définir des Routes. Les annotations sont un moyen de configuration qui se place dans les commentaires des fichiers PHP. Avec les annotations, on peut définir les Routes directement au-dessus des méthodes (des actions) des Contrôleurs. (Tout est dans le même endroit). <?php namespace AppBundleController; use SensioBundleFrameworkExtraBundleConfigurationRoute; use SymfonyBundleFrameworkBundleControllerController; use SymfonyComponentHttpFoundationRequest; class DefaultController extends Controller { /** * @Route("/", name="homepage") */ public function indexAction(Request $request) { // replace this example code with whatever you need return $this->render('default/index.html.twig' , [base_dir' => realpath($this- >getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR, ]); } } Dans le fichier routing.yml app: resource: '@AppBundle/Controller/' type: annotation La Route qu’il faut spécifier dans l’annotation doit prendre la forme suivante : @Route("path (url)", name="nom de la route") ACTIVITE 2 : 1. Créer un nouveau Controller dans AppBundle nommé : MyController dans lequel vous allez copier le code du DefaulController.php
  • 3. 2. MyController doit contenir une action MyAction qui permet d’afficher une page HTML située dans le dossier des Vues de Symfony (/app/Resources/Views) et nommée MyPage.html 3. Définir une Route qui permet d’afficher cette page lorsque l’on se place à l’URL suivante : localhost/TestSymfony1/web/app_dev.php/Essai/Affichage ACTIVITE 3 : 1. Dans un nouveau Bundle (BackBundle par exemple), créer une action d’affichage du texte « Page du BackBundle » câblée sur la Route « /» dans le contrôleur par défaut de ce bundle. 2. Dans le Bundle par défaut (AppBundle de Symfony), vérifier que l’affichage de la page de démarrage de Symfony est cablée sur la Route « / » aussi. 3. Ainsi, nous avons deux routes identiques dans deux bundles différents sans conflit. Au chargement de l’URL racine « / » (localhost/TestSymfony1/web/app_dev.php), qu’elle est la route la plus prioritaire ? ……………………………………………………………………………………………….. 4. Modifiez cette priorité en modifiant l’ordre des imports dans /app/config/routing.yml puis vérifiez la différence à l’affichage. 3. Création d’une route avec des paramètres et des contraintes On peut ajouter un paramètre dans le path d’une route. /** *@Route(path="/{id}") */ public function xxxxAction($id) { …………………………………………… } Grâce au paramètre {id}, toutes les url de type /* seront gérées par cette route. Exemples : web/app_dev/blog/article/5 web/app_dev/blog/article/654 web/app_dev/blog/article/abcd ({id} peut ne pas être un nombre) ACTIVITE 4 : 1. Compléter le code suivant pour afficher la valeur du paramètre depuis la méthode du Controller. use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAnnotationRoute; . . . /** * @Route("/blog/article/{id}") */ public function voirAction ($id) { return new Response( "affichage de l'article qui a un id = ".$id); } 2. Tester avec plusieurs URL en modifiant la valeur du paramètre ?
  • 4. On peut ajouter une contrainte sur les paramètres de l’URL en ajoutant les sections requirements et defaults dans la définition de la Route. La section requirements permet d’ajouter une contrainte exprimée en expression régulière. Exemple : d exige que le paramètre soit un seul chiffre. d+ exige que le paramètre soit un ou plusieurs chiffres. d{4} exige que le paramètre soit exactement 4 chiffres à la suite. A | B exige que le paramètre soit A ou B. Les paramètres sont par défaut obligatoires. La section defaults permet de les rendre facultatifs. Lorsqu’on ne renseigne pas la valeur d’un paramètre, c’est sa valeur par défaut qui sera interceptée. Il devient ainsi facultatif. ACTIVITE 5 : /** *@Route(path="/blog/article/{id}", requirements={"id"="d+"}) */ 1. Utiliser la Route ci-dessus pour la câbler sur l’action voirAction ($id) de BlogController. 2. Modifier cette Route pour que le paramètre de l’URL soit un seul chiffre. 3. Modifier cette Route pour que le paramètre soit facultatif. ACTIVITE 6: Soit le code de la méthode voirSlugAction ($slug, $annee, $format) de BlogController. public function voirSlugAction ($slug, $annee, $format) { return new Response ( "Affichage de l'article correspondant au slug ".$slug."créé à l'année ".$annee."et au format ".$format ); } 1. Déterminer la Route à configurer pour intercepter les URL de la forme : /blog/2018/mon-weekend.html ou /blog/2017/symphony.xml Il faut que l’année {annee} soit sur 4 chiffres exactement. Le format de la page {format} doit être seulement en html ou en xml. 2. Modifier cette Route de manière à ce que la valeur par défaut du paramètre {format} soit html. 3. Compléter ainsi la configuration suivante de la Route : /** *@Route(path="/blog/………………………………………………………………………………………………………… , requirements={…………………………………………………………, ……………………………………………………………}, defaults= {………………………………………………………} ) */