Question

Lors du codage d'une application MVC traditionnelle, quelle est la meilleure pratique pour coder les validations de formulaire côté serveur ?Le code appartient-il au contrôleur ou à la couche modèle ?Et pourquoi?

Était-ce utile?

La solution

De Wikipédia :

Modèle Vue Contrôleur (MVC) est un modèle architectural utilisé en génie logiciel.Une utilisation réussie du modèle isole la logique métier des considérations liées à l'interface utilisateur, ce qui donne lieu à une application dans laquelle il est plus facile de modifier soit l'apparence visuelle de l'application, soit les règles métier sous-jacentes sans affecter les autres.Dans MVC, le modèle représente les informations (les données) de l'application et les règles métier utilisées pour manipuler les données ;la vue correspond à des éléments de l'interface utilisateur tels que du texte, des cases à cocher, etc. ;et le contrôleur gère les détails impliquant la communication au modèle des actions de l'utilisateur telles que les frappes au clavier et les mouvements de la souris.

Ainsi, le modèle - il contient l'application et les règles métier.

Autres conseils

Je suis entièrement d'accord avec Josh.Cependant, vous pouvez créer une sorte de couche de validation entre le contrôleur et le modèle afin que la plupart des validations syntaxiques puissent être effectuées sur les données avant qu'elles n'atteignent le modèle.

Par exemple,

La couche de validation validerait le format de date, le format du montant, les champs obligatoires, etc...

Ce modèle se concentrerait donc uniquement sur les validations commerciales, comme le montant x devrait être supérieur au montant y.

Jusqu'à présent, mon expérience avec MVC consiste entièrement en rails.

Rails fait sa validation à 100% dans le modèle.
Pour la plupart, cela fonctionne très bien.Je dirais que 9 fois sur 10, c'est tout ce dont vous avez besoin.

Il existe cependant certains domaines dans lesquels ce que vous soumettez à partir d'un formulaire ne correspond pas correctement à votre modèle.Il peut y avoir un filtrage/réorganisation supplémentaire, etc.

La meilleure façon de résoudre ces situations que j'ai trouvées est de créer des objets faux-modèles, qui agissent essentiellement comme des objets modèles mais mappent 1 à 1 avec les données du formulaire.Ces objets de faux modèle ne sauvegardent rien, ils ne sont qu'un compartiment pour les données avec des validations attachées.
Un exemple d'une telle chose (dans les rails) est Formulaire actif

Une fois que les données y sont entrées (et sont valides), il s'agit généralement d'une étape assez simple pour les transférer directement vers vos modèles réels.

La vérification de la syntaxe de base doit être dans le contrôle car elle traduit l'entrée utilisateur pour le modèle.Le modèle doit effectuer la validation réelle des données.

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