Pour mon framework, j'ai écrit ce concept pour résoudre le problème de validation de formulaire. Je veux que ce soit aussi simple que possible pour l'utilisateur du framework.Est-ce un bon design pour faire la validation de formulaire?
Chaque formulaire (= objet) possède un ou plusieurs objets FormElements (= objets). Chaque FormElement peut avoir 0-n FormValidators (= objets). Tout facilement configuré via le backend (faites simplement glisser & drop stuff). Lorsque la vue Formulaire est affichée, elle boucle sur tous les objets FormElements et, pour chacun d'entre eux, elle boucle sur tous les FormValidators associés. De cette façon, il construit tout le JavaScript nécessaire pour valider le formulaire sur le côté client.
Un FormValidator est un objet léger qui ne définit que ces sept choses:
- PHP nom de classe de la classe utilitaire de validation
- nom de la méthode de la classe utilitaire de validation, qui doit être appelé
une chaîne pour les arguments supplémentaires (valeurs séparées par des virgules)
JavaScript "class" nom de l'utilitaire de validation
- nom de "procédé" qui doit être appelé
un Tring des arguments supplémentaires (valeurs séparées par des virgules)
un objet ErrorInfo associé qui contient un message d'erreur formaté
Chaque de ces méthodes de validation prennent comme premier argument une variable d'entrée avec les données d'entrée. Chacune de ces méthodes vérifie simplement l'entrée si elle correspond à une ou plusieurs règles, et renvoie TRUE ou FALSE.
Lorsque le formulaire est soumis, un FormDataManager est créé et reçoit: - l'objet Form (il sait d'où proviennent les données) - les données d'entrée (généralement $ _POST)
Il alors juste itère sur tous les FormElements, vérifie tous leurs FormValidators, et si quelque chose est invalide, il recharge le Formulaire qui est passé le tableau des messages d'erreur. Si tout va bien, les données sont traitées plus avant (c'est-à-dire stockées dans db).
Y a-t-il des améliorations dans cette conception? Quelque chose que j'ai raté?
Je pense toujours que vous devriez télécharger ceci à google code, sourceforge ou git afin que nous puissions prévisualiser votre cadre. – Gordon