Question

Dans le modèle Model-View-Presenter où nous devrions écrire des validations d’entrée utilisateur.

Était-ce utile?

La solution

Les règles / validations spécifiques à un domaine doivent figurer dans le modèle. Vous pouvez avoir un model.validate () pour vous faire savoir si les règles ne sont pas violées. Regardez les classes de modèle Rails (ActiveRecord) pour une bonne implémentation de ce concept.

La vue devrait rendre difficile pour l'utilisateur la saisie d'une saisie invalide. Ainsi, les erreurs d’entrée doivent être supprimées avant d’atteindre le présentateur. Il peut y avoir une duplication des validations entre modèle et vue. Par exemple. AttributeX doit être compris entre 1 et 100. Cela doit être validé dans le modèle .. en même temps, vous pouvez également vouloir insérer une spinner dans l'interface utilisateur avec les valeurs minValue et maxValue définies sur 1-100.

Autres conseils

Habituellement, je garde ma vue complètement propre, sans aucune logique. Mais je ne fais pas beaucoup de développement web. Dans les situations Ajax-ish, vous souhaiterez peut-être une validation côté client qui doit figurer dans la vue.

La validation de la logique métier est intégrée au modèle. Par validation de la logique métier, je veux dire des choses comme la vérification de la taille minimale de commande, etc.

La validation des entrées va dans le présentateur. Cela peut être par exemple vérifier si un champ numérique ne contient pas de caractères non numériques. Mais selon votre situation, cela peut également signifier de vérifier si des fichiers existent, etc.

Dans les cas plus complexes où la validation doit être réutilisable à différents endroits, je la sépare généralement en un moteur de validation pouvant être appelé à différents endroits. Cela résout certains problèmes de duplication du code de validation utilisé dans la couche de présentation, ainsi que dans la couche de persistance, par exemple.

Présentateur ....

La vue aurait dû avoir " widgets " qui empêchent la saisie invalide dans la mesure du possible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top