developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 13 years ago

Closed 12 years ago

Last modified 12 years ago

#351 closed new feature (fixed)

jForms : connaitre les champs modifiés

Reported by: doms Owned by: laurentj
Priority: normal Milestone: Jelix 1.1 beta 1
Component: jelix:forms Version: 1.0 beta 3.1
Severity: minor Keywords:
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version:

Description

Ce ticket fait suite à une discussion du forum :http://jelix.org/forums/read.php?5,1543

L'idée principale est de pouvoir comparer les données d'un formulaire reçu avec un formulaire déjà enregistré. Le besoin qui a initié la discussion sur le forum et ce ticket se situe au niveau de la modification d'un élément déjà existant (le U de CRUD). On peut vérifier par exemple que les données du formulaire reçu sont différentes de celle du formulaire d'origine, totalement ou bien en partie.

À l'heure actuelle pour faire cela, il faut extraire les données du formulaire initial avec getDatas() et les stocker dans une structure de données : un tableau convient parfaitement. Puisque les méthodes de jForms fournissent des références aux objets, il n'est pas possible de stocker directement un objet dans une variable formulairePrecedent et de comparer les données de cet objet à celle du formulaire reçu.

Une solution pourrait être de créer un formulaire clone du formulaire courant (clone dans le sens PHP). Ainsi ce formulaire serait insensible aux modifications du formulaire original. Un jeu de méthodes est associé à ce clone : création, suppression, mise à jour, comparaison de toutes les données, comparaison d'une liste de données...

Change History (7)

comment:1 Changed 13 years ago by laurentj

  • Severity changed from normal to minor
  • Summary changed from jForms : comparaison des données d'un formulaire saisi avec un formulaire existant to jForms : connaitre les champs modifiés

comment:2 Changed 13 years ago by laurentj

Ce que tu veux, c'est savoir les champs modifiés. Ta solution proposée, celle de stocker deux fois le formulaire n'est franchement pas efficace en terme de mémoire.

Il suffit juste d'implémenter un boolean, pour chaque contrôle, qui indique si la valeur a été modifiée ou pas. Et ce booléen serait renseigné par jforms lors de l'assignation des valeurs reçues.

comment:3 Changed 13 years ago by doms

Savoir quels champs ont été modifiés est une des utilisations possibles. L'utilisation de booléen est une bonne solution.

Par contre on ne sait pas comment ont été modifiés les champs et l'on n'a plus la valeur précédente des champs pour le savoir.

On pourrait associer au booléen la valeur précédente du champ... Ainsi on aurait toutes les informations utiles.

comment:4 Changed 12 years ago by laurentj

  • Documentation needed unset
  • Owner set to laurentj
  • Status changed from new to assigned

comment:5 Changed 12 years ago by laurentj

  • Milestone set to Jelix 1.1

comment:6 Changed 12 years ago by laurentj

  • Documentation needed set
  • Resolution set to fixed
  • Status changed from assigned to closed

Nouvelle méthode getModifiedControls sur le formulaire, permettant d'avoir la liste des controls modifiés et leurs anciennes valeurs (array('ref_control'=>'old_value')).

Modif fait dans le trunk. svn-846.

Note: See TracTickets for help on using tickets.