<action>: envoi des données récoltées par un formulaire vers une applicationUn sous-élément <action> placé tout au début de l'élément <formulaire> permettra d'envoyer les données récoltées par le formulaire à une application. L'application en question sera mentionnée grâce à un attribut de type hypertexte (le plus souvent href). L'appel à l'application se fera en post ou en get. En règle générale, cette application va répondre avec du code HTML, qui sera affiché par le navigateur, en lieu et place de la page qui contient le formulaire.
Contenu de l'élément <action>L'élément <action> peut contenir les sous-éléments suivants (ils ne sont pas obligatoires):
L'élément <action> peut posséder les attributs suivants:
|
Exemple <formulaire style="voile" bords="arrondis"> <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php"/> <input> <nom>lastname</nom> <libellé>nom</libellé> </input> <input> <nom>firstname</nom> <libellé>prénom</libellé> </input> <bouton> <nom>go</nom> <libellé>Envoyer</libellé> </bouton> </formulaire> |
Le même exemple que le précédent, mais une confirmation est demandée à l'utilisateur avant d'envoyer des données, grâce à des actions exécutées par un élément <actions>. Un paramètre supplémentaire est également envoyé contenant l'URL de la page courante. Exemple <formulaire style="voile" bords="arrondis"> <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php"> <actions exécuter="avant">confirmation(êtes-vous sûr ?),si:fin:arrêter</actions> <paramètre nom="page">{page:pageURL}</paramètre> </action> <input> <nom>lastname</nom> <libellé>nom</libellé> </input> <input> <nom>firstname</nom> <libellé>prénom</libellé> </input> <bouton> <nom>go</nom> <libellé>Envoyer</libellé> </bouton> </formulaire> |
Exemple en get <formulaire style="voile" bords="arrondis"> <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="post"/> <input> <nom>lastname</nom> <libellé>nom</libellé> </input> <input> <nom>firstname</nom> <libellé>prénom</libellé> </input> <bouton> <nom>go</nom> <libellé>Envoyer</libellé> </bouton> </formulaire> |
Exemple en post <formulaire style="voile" bords="arrondis"> <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="post"/> <input> <nom>lastname</nom> <libellé>nom</libellé> </input> <input> <nom>firstname</nom> <libellé>prénom</libellé> </input> <bouton> <nom>go</nom> <libellé>Envoyer</libellé> </bouton> </formulaire> |
Réponse de l'applicationL'application distante va, en règle générale, renvoyer du code HTML que le navigateur affichera en lieu et place de la page web courante (c'est-à-dire celle qui contenait le formulaire). Ce mode de fonctionnement est celui qui est utilisé en HTML. De ce fait, une fois que cette réponse est affichée, il n'est plus possible d'utiliser des resources définies dans la page précédente. c'est ainsi que les actions éventuelles que vous envisagiez d'exécuter après avoir reçu la réponse ne pourront pas être exécutées (ces actions disparaissent en même temps que la page). Vous avez plusieurs possibilités pour contourner ce fait:
Dans les deux cas, la page courante restera affichée dans le navigateur. Il vous incombe alors d'utiliser des actions pour modifier le contenu de cette page, par exemple en faisant disparaître le bloc qui contient le formulaire et en faisant apparaître un bloc contenant un message de confirmation. Une dernière solution, plus adéquate, consiste à ne pas utiliser cet élément <action>, mais à le remplacer par un élément <interaction>. Dans ce cas, la réponse de l'application distante sera une série d'actions qui seront exécutées pour, par exemple, faire disparaître le formulaire et le remplacer par un message de confirmation ou, le cas échéant, un message d'erreur. Ouvrir dans un nouvel ongletLe lien hypertexte peut être accompagné de l'attribut nouvel-onglet pour afficher la réponse au formulaire d'un un nouvel onglet du navigateur. |
Exemple <formulaire style="voile" bords="arrondis"> <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" nouvel-onglet="oui"/> <input> <nom>lastname</nom> <libellé>nom</libellé> </input> <input> <nom>firstname</nom> <libellé>prénom</libellé> </input> <bouton> <nom>go</nom> <libellé>Envoyer</libellé> </bouton> </formulaire> |
Afficher la réponse dans une balise <html> grâce à une action html:xxxx |
Dans cet exemple, le formulaire possède une ancre "form". Il sera masqué au moment de l'envoi des données, grâce à masquer:form dans l'attribut cible, faisant ainsi disparaître le formulaire après cet envoi. L'application distante qui recevra les données du formulaire, répondra avec du code html qui sera affiché non pas dans une nouvelle page, mais dans une balise <html ancre="reponse"> destinée à cet effet, grâce à une deuxième action html:reponse placée dans le même attribut cible. Exemple <formulaire style="voile" bords="arrondis" ancre="form"> <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dump.php" cible="masquer:form,html:reponse"/> <input> <nom>lastname</nom> <libellé>nom</libellé> </input> <input> <nom>firstname</nom> <libellé>prénom</libellé> </input> <bouton> <nom>go</nom> <libellé>Envoyer</libellé> </bouton> </formulaire> <html ancre="reponse"></html> |