Académique Documents
Professionnel Documents
Culture Documents
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.
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 :
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.
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.
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 :
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
ISET CHARGUIA 3
Framework coté Serveur Initiation à Symfony DSI 2
On va traiter la fonction somme comme vous l’avez remarqué sans annotation (@Route) comme
suit :
ISET CHARGUIA 4
Framework coté Serveur Initiation à Symfony DSI 2
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
Exercice 2 :
Le fichier DemoController.php sera comme suit :
ISET CHARGUIA 6
Framework coté Serveur Initiation à Symfony DSI 2
ISET CHARGUIA 7
Framework coté Serveur Initiation à Symfony DSI 2
ISET CHARGUIA 8