Objectifs de la séance ¶
- Utiliser les données de session pour mémoriser des informations
Consignes ¶
Ce sujet complémentaire est la suite du TP « Authentification et sessions ». Les questions seront logiquement traitées dans le même dépôt Git que le sujet principal.
Affichage du drapeau du pays ¶
Le composant « SessionManagedCountrySelect
» propose une interface de saisie et une gestion transparente de la mémorisation du code du pays dans les données de session. Elle ne propose cependant pas la production du code HTML
correspondant au code du pays. Vous allez développer la classe « CountryFlag
» qui va s'appuyer sur le code du pays, un chemin d'accès Web et évidemment une série d'images de drapeaux pour produire le code HTML
correspondant à l'image du pays.
Ressources nécessaires ¶
Dans un premier temps, vous allez installer les ressources nécessaires à l'affichage des drapeaux.
- Téléchargez dans le répertoire temporaire «
/tmp
» l'archive tar compressée «flags.tgz
» qui contient les images des drapeaux de taille 24×24 pixels - Créez le répertoire «
public/img/flags
» dans votre projet - Décompressez l'archive «
flags.tgz
» à l'aide de la commande «tar
» suivante :tar -zxvf /tmp/flags.tgz -C public/img/flags/
- Placez le programme «
flags.php
» (télécharger) dans le répertoire «public
» - Vérifiez que la page Web générée s'affiche correctement :
Création de la classe « CountryFlag
»
¶
Les ressources étant accessibles, vous pouvez à présent développer la classe « CountryFlag
» encapsulant leur intégration dans la page Web.
- Créez la classe «
Html\CountryFlag
» - Ajoutez les propriétés à la classe conformément au diagramme de classe
- Générez automatiquement les accesseurs et mutateurs
- Écrivez le constructeur de la classe
- Écrivez la méthode «
toHtml()
» qui produit le codeHTML
correspondant à l'image du drapeauRemarque importanteN'oubliez pas l'attribut «
alt
» de l'image.
Affichage du drapeau à côté de la liste déroulante des pays ¶
Une première utilisation de la classe « CountryFlag
» va permettre d'afficher le drapeau du pays à côté de la liste déroulante de choix de pays dans le programme « session-managed-select.php
».
- Dans le programme «
public/session-managed-select.php
», construisez une instance de «Html\CountryFlag
» en lui passant en paramètre le code pays actuel géré par le «SessionManagedCountrySelect
» ainsi que le chemin Web vers les ressources des images des drapeaux - Ajoutez le résultat de la méthode «
toHtml()
» du «CountryFlag
» au contenu de la page Web courante - Vérifiez que le bon drapeau s'affiche correctement à côté de la liste déroulante
Affichage du drapeau dans un nouveau programme ¶
La classe « CountryFlag
» peut être utilisée dans d'autres programmes. Si vous souhaitez afficher le drapeau du pays sélectionné par l'utilisateur, vous devez utiliser une instance de « SessionManagedCountrySelect
» qui permet de récupérer le code de pays stocké dans la session si c'est possible. Dans ce cas, rien ne vous oblige à produire la liste déroulante.
- Créez le programme «
public/country.php
» sur la base de «public/session-managed-select.php
» :- Construction d'une «
WebPage
» (ou «AppWebPage
») - Construction d'un «
SessionManagedCountrySelect
» - Construction d'un «
CountryFlag
» - Production de la réponse
HTTP
à l'aide la «WebPage
»
- Construction d'une «
- Ajoutez le résultat de la méthode «
toHtml()
» du «CountryFlag
» comme seul contenu de la page Web courante - Vérifiez que le bon drapeau s'affiche correctement
- Modifiez le pays choisi en utilisant le programme «
public/session-managed-select.php
» - Vérifiez que le bon drapeau s'affiche correctement dans «
public/country.php
»