Framework coté Serveur Initiation à Symfony DSI 2 Atelier 3 Passage de paramètr
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 uploads/Ingenierie_Lourd/ atelier-routage.pdf
Documents similaires










-
34
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mar 05, 2022
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.2457MB