Raccourcis : Contenu - rubriques - sous rubriques
FR

Piste :

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révisionLes deux révisions suivantes
fr:tutoriels:jelixnews-1.7:formulaire-de-news [2011/05/24 16:42] – modification externe 127.0.0.1fr:tutoriels:jelixnews-1.7:formulaire-de-news [2019/05/22 20:27] laurent
Ligne 1: Ligne 1:
  
-Il y a deux manières de faire des formulaires : soit de manière classique, "à la main", soit en utilisant le nouveau système de formulaire jForms. jForms s'occupe à la fois des traitements coté serveur des données reçues d'un formulaire (HTML, XUL ou service web) : création, sauvegarde, vérification des saisies, etc, et à la fois de la génération  des formulaires HTML dans les templates.+Il y a deux manières de faire des formulaires : soit de manière classique, "à la 
 +main", soit en utilisant le nouveau système de formulaire jForms. jForms 
 +s'occupe à la fois des traitements coté serveur des données reçues d'un 
 +formulaire (HTML, XUL ou service web) : création, sauvegarde, vérification des 
 +saisies, etc, et à la fois de la génération  des formulaires HTML dans les 
 +templates.
  
-Dans ce chapitre, on va utiliser la méthode "traditionnelle", histoire de se familiariser avec les enchaînements d'actions et autres concepts de base de Jelix. Plus loin dans le tutoriel, nous vous montrerons comment utiliser jForms.+Dans ce chapitre, on va utiliser la méthode "traditionnelle", histoire de se 
 +familiariser avec les enchaînements d'actions et autres concepts de base de 
 +Jelix. Plus loin dans le tutoriel, nous vous montrerons comment utiliser jForms.
  
-Le but de ce chapitre, va être de créer un simple formulaire afin d'enregistrer de nouvelles news.+Le but de ce chapitre, va être de créer un simple formulaire afin d'enregistrer 
 +de nouvelles news.
  
  
 ===== Le template et les URLs ===== ===== Le template et les URLs =====
  
-En premier lieu, nous allons faire le template, très simplifié, que l'on stocke dans le fichier @@F@actu.org/modules/news/template/newsform.tpl@@ :+En premier lieu, nous allons faire le template, très simplifié, que l'on stocke 
 +dans le fichier @@F@actu.org/modules/news/template/newsform.tpl@@ :
  
 <code xml> <code xml>
Ligne 36: Ligne 45:
 </code> </code>
  
-Rien de très complexe, au niveau HTML. Toutefois vous remarquerez l'usage de nouveaux tags : {formurl}, {formurlparam} et {jurl}. Quelques explications...+Rien de très complexe, au niveau HTML. Toutefois vous remarquerez l'usage de 
 +nouveaux tags : @@{formurl}@@@@{formurlparam}@@ et @@{jurl}@@. Quelques explications...
  
-Dans Jelix, vous éviterez de mettre des URLs en dur dans les templates ou les actions, pour des raisons de facilité de maintenance et d'évolution. Le système d'URL de Jelix vous permet de centraliser toutes les URLs dans la config de Jelix ou dans un fichier urls.xml (tout dépend du moteur d'URL utilisé). Ainsi l'objet @@C@jUrl@@ et le tag @@{jurl}@@ vous permettent d'obtenir une URL en donnant uniquement le nom de l'action et des éventuels paramètres.+Dans Jelix, vous éviterez de mettre des URLs en dur dans les templates ou les 
 +actions, pour des raisons de facilité de maintenance et d'évolution. Le système 
 +d'URL de Jelix vous permet de centraliser toutes les URLs dans un fichier 
 +@@app/system/urls.xml@@ (qui peut faire référence à des fichiers urls.xml présent 
 +dans les modules). 
 +Ainsi l'objet @@C@jUrl@@ et le tag @@{jurl}@@ vous permettent d'obtenir une URL en 
 +donnant uniquement le nom de l'action et des éventuels paramètres.
  
-Ainsi, pour le lien "Annuler", l'URL générée sera "/actu.org/www/index.php/news/default/index". Si vous changez l'emplacement de index.php, ou si vous activez le moteur d'URLs significatives (en mappant @@news/list@@ sur l'action @@news~default:index@@), vous n'aurez pas à modifier vos templates.+Ainsi, pour le lien "Annuler", l'URL générée sera 
 +"/index.php/news/default/index". Si vous changez l'emplacement de 
 +index.php, ou si vous modifier l'url de l'action dans urls.xml (en mappant 
 +@@news/list@@ sur l'action @@news~default:index@@), vous n'aurez pas à modifier 
 +vos templates.
  
-On aurait pu utiliser le tag @@{jurl}@@ aussi sur la balise @@E@<form>@@, mais si l'URL contient des paramètres (comme c'est le cas ici avec module et action), il est préférable de les mettre dans des champs cachés. Cependant, si on changeait la configuration sur le mapping URL, ce n'est pas forcé qu'il y ait toujours ces paramètres. Aussi on utilise conjointement les plugins @@{formurl}@@ et @@{formurlparam}@@ qui se chargeront eux même de décider ce qu'il faut mettre dans l'attribut "action", et ce qu'il faut mettre dans des champs cachés.+On aurait pu utiliser le tag @@{jurl}@@ aussi sur la balise @@E@<form>@@, mais 
 +si l'URL contient des paramètres (comme c'est le cas ici avec module et action), 
 +il est préférable de les mettre dans des champs cachés. Cependant, si on 
 +changeait la configuration sur le mapping URL, ce n'est pas forcé qu'il y ait 
 +toujours ces paramètres. Aussi on utilise conjointement les plugins 
 +@@{formurl}@@ et @@{formurlparam}@@ qui se chargeront eux même de décider ce 
 +qu'il faut mettre dans l'attribut "action", et ce qu'il faut mettre dans des 
 +champs cachés.
  
-Note : par défaut, @@{jurl}@@, @@{formurl}@@ et @@{formurlparam}@@  échappe correctement dans l'URL les caractères réservés en HTML/XML.+Note : par défaut, @@{jurl}@@, @@{formurl}@@ et @@{formurlparam}@@  échappe 
 +correctement dans l'URL les caractères réservés en HTML/XML.
  
  
 ===== Affichage du formulaire ===== ===== Affichage du formulaire =====
  
-On va créer une première action 'createform' dans le contrôleur "default"  pour afficher un formulaire de saisie d'une nouvelle news.+On va créer une première action 'createform' dans le contrôleur "default"  pour 
 +afficher un formulaire de saisie d'une nouvelle news.
  
 <code php> <code php>
Ligne 72: Ligne 101:
 Là encore, on utilise le tag @@{jurl}@@. Là encore, on utilise le tag @@{jurl}@@.
  
-Maintenant rafraîchissez la page de liste des news dans le navigateur ( http://localhost/actu.org/www/index.php ). Vous devriez avoir le lien "Ajouter une news". Si vous cliquez dessus, le formulaire devrait s'afficher.+Maintenant rafraîchissez la page de liste des news dans le navigateur ( 
 +http://localhost:8080/index.php ). Vous devriez avoir le lien "Ajouter une 
 +news". Si vous cliquez dessus, le formulaire devrait s'afficher.
  
 ===== Sauvegarde des données ===== ===== Sauvegarde des données =====
  
-Comme on l'a indiqué dans le formulaire, il nous faut maintenant créer une action 'default:createsave' de sauvegarde des données.+Comme on l'a indiqué dans le formulaire, il nous faut maintenant créer une 
 +action 'default:createsave' de sauvegarde des données.
  
-En premier lieu, on récupère un record, que l'on rempli ensuite avec les données envoyées par le formulaire. Les paramètres d'URL ($_GET) ou postés ($_POST), sont accessibles via la méthode param() des contrôleurs.+En premier lieu dans cette action, on récupère un record, que l'on rempli ensuite avec les données 
 +envoyées par le formulaire. Les paramètres d'URL (@@$_GET@@) ou postés (@@$_POST@@), 
 +sont accessibles via la méthode @@param()@@ des contrôleurs.
  
 <code php> <code php>
Ligne 95: Ligne 129:
  
 Enfin, on va rediriger vers la liste de news. Enfin, on va rediriger vers la liste de news.
 +
 <code php> <code php>
         $rep = $this->getResponse('redirect');         $rep = $this->getResponse('redirect');
Ligne 118: Ligne 153:
     }     }
 </code> </code>
 +
 +Bien sûr, une bonne manière de développer ici serait de vérifier chaque
 +paramètre avant de les enregistrer, afin de respecter les éventuelles règles
 +de gestion qui s'applique à vos données. Par exemple, vérifier que le sujet
 +et le texte ne sont pas vide, et que la date est au format correcte.
  
 Vous pouvez maintenant utiliser le formulaire pour créer de nouvelles news. Vous pouvez maintenant utiliser le formulaire pour créer de nouvelles news.
  

fr/tutoriels/jelixnews-1.7/formulaire-de-news.txt · Dernière modification : 2019/05/23 09:30 de laurent

Fils rss des changements récents dans le wiki Creative Commons License