Vous êtes sur la page 1sur 8

Framework coté Serveur Initiation à Symfony DSI 2

Atelier 3
Passage de paramètres dans les routes
Objectif :
 Avec les annotations, pouvoir passer des paramètres aux url et les afficher dans les vues.
 Créer une route au format yaml
Par exemple, l'utilisateur peut saisir http://localhost:8000/son-nom/ et la page lui affiche son nom
dans le navigateur.

Partie 1 : Passage de paramètres avec les annotations

Etape 1 : Faire des modifications dans le controller


Pour ce faire, Vous allez d'abord modifier légèrement la route dans le contrôleur par défaut
DemoController par ce qui suit :

Vous avez juste rajouté {username} au lien. Les accolades disent à Symfony qu'il s'agit d'une variable.
Cela équivaut en quelques sortes à http://localhost:8000/?username="nom_de_utilisateur". Mais
cela n'est pas esthétique, c'est plus chargé.
Symfony vous facilite la tâche avec ce format http://localhost:8000/{username}/, qui ne contient
plus le « ? » pour indiquer les paramètres et plus besoins de mettre le nom de la variable, on met
uniquement la valeur de la variable dans le lien.
Ensuite, vous allez dire à votre action de recevoir le paramètre qui sera envoyé dans la route. Pour le
faire, c'est simple, on ajoute un paramètre du même nom à l’ action index et Symfony se charge du
reste. La fonction de vient donc :

Ensuite, vous allez envoyer ce paramètre à votre vue pour l'afficher.


La méthode render du contrôleur accepte un deuxième paramètre qui est un tableau de type clé-
valeur dans lequel vous pouvez mettre tous les paramètres que vous voulez transmettre à la vue.
Ainsi, pour envoyer votre username à la vue (twig), vous devriez avoir ceci :

ISET CHARGUIA 1
Framework coté Serveur Initiation à Symfony DSI 2

On a ajouté un tableau montré par les 2 crochets [..] comme deuxième paramètre de la méthode
render. Ensuite une cellule ayant pour valeur $username (paramètre transmis à l'action via la route)
associée à la clé nom. Ce dernier aurait pu être nommé autrement.

Etape 2 : utiliser la variable transmise dans Twig


Maintenant, votre vue reçoit le paramètre, vous pouvez l'afficher en twig.
Ajoutez donc le petit code qui suit, juste après la balise <h1> de votre vue :
<strong>Bonjour {{nom}},</strong>
Vous avez juste demandé à twig d’afficher le contenu de la variable username qui lui a été transmise
en l'entourant de double-accolades.

Etape 3 : Ajouter une valeur dans l’adresse url


Maintenant, ajoutez, par exemple, la valeur « Yosra » à votre url dans le navigateur comme suit :
 http://localhost:8000/Yosra avec un serveur personnalisé ( server :run )
 Ou http://localhost/testsymfony/public/index.php/Yosra avec le serveur Apache
Et voilà, le navigateur devrait afficher « Bonjour Yosra, » et ce sera tout pour cette première partie.

Partie 2 : Créer une route au format yml

Les fichiers de routes se trouvent dans le dossier Config/routes du projet symfony 4 (testsymfony)
pour lequel l'on veut créer la route. Par défaut, il contient un fichier nommé routes.yaml. Pour éviter
de créer un autre, définissez vos routes dans ce fichier.

Etape 1 : Consulter routes.yaml

Lorsque vous ouvrez le fichier « routes.yaml » dans le dossier Config/routes , vous remarquerez
qu'il contient le code suivant :

ISET CHARGUIA 2
Framework coté Serveur Initiation à Symfony DSI 2

Explication
 Index : nom de la route à définir
 path : pour définir le lien ou l’url de la route.
 controller : pour définir le contrôleur à appeler et la fonction à exécuter ;
 Default : le nom du contrôleur à appeler (comme Demo dans notre cas).
  ::index : nom du fichier twig de la vue à appeler.
Si on enlève les # et on remplace le nom du contrôleur DemoContoller comme suit :

Notez bien : il faut respecter les alignements par défauts

On obtient dans le navigateur :

 http://localhost:8000/ avec un serveur personnalisé ( server :run )


 Ou http://localhost/testsymfony/public/index.php/ avec le serveur Apache

Notez bien : il faut respecter

Etape 2 : Création d’un contrôleur et d’un fichier twig pour une action d’addition de
deux variables avec le routage YAML

 Dans le dossier testsymfony, créer un nouveau contrôleur SommeController.php (voir chapitre


traitement des contrôleurs)

ISET CHARGUIA 3
Framework coté Serveur Initiation à Symfony DSI 2

 Puis créer dans la classe SommeController et la fonction somme() comme suit

On va traiter la fonction somme comme vous l’avez remarqué sans annotation (@Route) comme
suit :

 Puis Ouvrir le dossier Somme dans le dossier Templates du contrôleur SommeController

 Créer un fichier somme.html.twig dans ce dossier

 Ouvrir le fichier somme.html.twig et saisir le texte suivant

ISET CHARGUIA 4
Framework coté Serveur Initiation à Symfony DSI 2

 Créer Enfin la route du contrôleur Somme dans le fichier routes.yaml du dossier


config/routes :

On obtient dans le navigateur :

 http://localhost:8000/somme/5/8 avec un serveur personnalisé ( server :run )


 Ou http://localhost/testsymfony/public/index.php/somme/5/8 avec le serveur Apache

Partie 3 : Exercices Résolus

Exercice 1 :
Essayez de réécrire la fonction somme du contrôleur SommeController en utilisant
l’annotation (@Route)
Exercice 2 :
Essayez de réécrire les fonctions index2 et test sans utilisez les annotations(@Route) dans le
contrôleur DemoController.php.et complétez le fichier routes.yaml par les Paths nécessaires.

Solutions :
Exercice 1 :

ISET CHARGUIA 5
Framework coté Serveur Initiation à Symfony DSI 2

Le fichier SommeController.php sera comme suit :

Exercice 2 :
Le fichier DemoController.php sera comme suit :

ISET CHARGUIA 6
Framework coté Serveur Initiation à Symfony DSI 2

Et le fichier routes.yaml dans le dossier Config/routes sera comme suit :

ISET CHARGUIA 7
Framework coté Serveur Initiation à Symfony DSI 2

ISET CHARGUIA 8

Vous aimerez peut-être aussi