Envoyé par : Geceo
Date : 21/07/2006 16:03
Bonjour,
Je suis en train de lire la page : http://www.w3.org/MarkUp/Forms/2006/xfor(..) et j'ai l'impression que XForms est conçu pour stocker toutes les données en XML, y compris les données qui servent à initialiser le formulaire (c'est-à-dire le contenu de la balise "instance").
Actuellement, pour initialiser un formulaire HTML, je remplis les attributs "value" des balises "input" (écriture faite en PHP à partir des valeurs lues dans ma base de données). J'imagine qu'on fait tous comme ça.
Si demain, on utilise un fichier XML pour initialiser un formulaire XForms, il faudra que PHP ait généré ce fichier XML préalablement. Est-ce qu'il existe des exemples de programmation "PHP + XForms" pour montrer comment ces deux langages vont pouvoir coopérer? Car ce rôle central de XML, avec XForms, me semble constituer un changement majeur dans la logique de programmation. Je voudrais bien en comprendre dès maintenant toutes les conséquences pratiques, mais tout seul, c'est pas évident...
Geceo
Envoyé par : laurentj
Date : 31/07/2006 23:08
Oui, la logique est différente. (voir aussi une traduction française : http://www.yoyodesign.org/doc/w3c/xforms(..) )
Donc en effet, les valeurs ne sont plus de simples valeurs, mais sont stockées dans un document XML. Ce document xml peut être mis directement dans la balise instance, mais aussi peut être séparé, c'est à dire placé à une url précise ! (dans ce cas, on indique l'url du document dans un attribut de la balise instance).
Pour "preparer" ton formulaire, tu as deux choix (remplacer PHP par le langage serveur de votre choix) :
D'autre part, pour l'envoi des données, cela est indiqué via la balise submission. Tu peux indiquer de renvoyer à l'url précisée, les données sous forme xml (que tu récupère via $HTTP_RAW_POST_DATA et ensuite un coup de simplexml pour lire) , ou sous forme urlencodée (donc valeur accessible via $_POST ou $_GET selon la méthode employée).
Ce qui est bien, tu peux dire aussi ce qui se passe aprés la soumission. Ainsi, soit ton script renvoi une nouvelle page (comme les form html classique), soit ton script renvoi de nouvelles données pour le formulaire (en xml donc, c'est à dire le contenu de instance), soit enfin ton script ne renvoit rien.
Bref, avec xforms, tu fais comme ce qu'on fait en ajax, mais en plus simple, plus souple, et moins lourd. Voir http://ljouanneau.com/blog/2006/04/05/54(..).
Envoyé par : Geceo
Date : 02/08/2006 18:07
Salut Laurent!
En fait c'est après avoir lu ton blog que je me suis penché sur XForms et ça répond justement à un problème bien concret auquel j'ai été confronté l'autre jour avec les formulaires HTML : l'envoi de données complexes, plus précisément un tableau d'objets JavaScript. En fait je voulais que mon formulaire soit comme un tableau, avec dans chaque ligne un objet, et que l'utilisateur puisse modifier les objets dans n'importe quel ordre, qu'il puisse ajouter ou enlever des objets, et que tout soit envoyé en un seul clic. Finalement j'ai utilisé le fameux objet XMLhttpRequest pour que le serveur prenne en compte chaque modification en temps réel, l'utilisateur n'y voit que du feu, mais qu'est-ce que c'était long à programmer, je ne le referai pas. Donc c'est clair qu'un XForm qui renvoit une structure en XML en quelques lignes, c'est génial, surtout qu'en plus ça gère la validation des données.
Sinon, la traduction que tu as trouvé, c'est celle de la partie 1 de l'article. La partie 2 de "XForms for XHTML authors" n'est pas encore faite, il me semble. Sinon j'aurais lu la traduction... :)
Au niveau de l'initialisation du XForm, je crois que je vais réfléchir aux deux possibilités. Je pense quand même que je vais partir sur la première, car ça laisse plus de liberté en PHP.
Geceo
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.