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

  • 34
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager