Dans le cadre de développement MVC, lors de la soumission du contrôle de légalité du contenu saisi par l'utilisateur, est-il complété par c ou m ?
phpcn_u1582
phpcn_u1582 2017-05-16 17:06:31
0
13
1120

Lorsque vous utilisez actuellement le framework de développement MVC, lorsque vous vérifiez la légalité du texte saisi par l'utilisateur sur le front-end de l'utilisateur, lorsque l'utilisateur le soumet, cela doit-il être géré par la couche C ou la couche M ?

phpcn_u1582
phpcn_u1582

répondre à tous(13)
某草草

Je dois être d'accord avec la déclaration de Yi Wei. Permettez-moi d'ajouter ma compréhension. V est vérifié pour garantir l'expérience utilisateur, afin que les utilisateurs ne trouvent pas d'erreurs après la soumission et reviennent pour les corriger pour garantir la légalité de. les données elles-mêmes. Vérification (si les données appartiennent à l'utilisateur et si le changement de statut des données répond aux exigences logiques), M effectue une transaction pour garantir l'existence des données, si les données n'existent pas, il n'est pas nécessaire d'aller en dessous. , ça doit être anormal.

过去多啦不再A梦

Cette question doit être analysée en combinaison avec des applications spécifiques, des langages spécifiques et des frameworks spécifiques, et est même liée au style et à la composition des membres de l'équipe.

Personnellement, je préfère que M fasse la logique de vérification, lève des exceptions, puis C pour la capturer et la convertir au format requis par le front-end pour la sortie. Ce code initial peut être un peu verbeux, mais il est plus bénéfique pour l'intégrité logique et l'expansion ultérieure.

Une autre approche consiste à établir ce que l'on appelle une couche logique entre M et C pour gérer la logique de vérification et une partie de la logique métier

洪涛

Généralement, dans le framework MVC, une couche de service sera ajoutée en fonction du traitement métier. Le modèle sera mappé ORM ou supprimé directement et écrira un DAO. D'accord, parlons maintenant de la couche dans laquelle la vérification est effectuée. La plus correcte. La méthode est le contrôleur. La couche C et la couche de service S doivent être effectuées, car à mesure que le site Web se développe, il est absolument nécessaire de séparer le service en tant que composant de service public pour les appels à distance, donc si vous n'effectuez pas de vérification au niveau du contrôleur. , il y aura Pour les demandes de données, vous les envoyez directement aux services publics, puis renvoyez une erreur, cela gaspillera évidemment une IO réseau. Donc, si vous avez effectué une vérification des données au niveau du contrôleur. , lorsque les données sont incorrectes, lancez directement une exception, pas besoin de passer un appel à distance via RPC

習慣沉默

Cela dépend certainement de la situation :

  • La légalité du format texte : utilisez simplement la vérification js ou des expressions régulières pour le gérer sur le front-end.
  • Problème de validité des données :

    • Cas simple : Par exemple, la vérification de la légalité de l'année, du mois et du jour peut également être effectuée en amont.
    • Situations plus larges : incluant les deux situations ci-dessus, ainsi que la vérification du nom d'utilisateur, la vérification de la répétabilité, etc., des situations impliquant une logique métier spécifique, représentée par le framework Rails, sont placées dans le modèle pour compléter la vérification.

Gros modèle, contrôleur maigre.

Peter_Zhu

Echang coding a un principe : les interfaces ne se font pas confiance.

世界只因有你

Si vous l'écrivez vous-même sans aucun cadre, il doit appartenir à la couche c. Mais davantage de frameworks ont tendance à être placés dans la couche m.

De plus, n'effectuez pas uniquement la vérification des entrées sur la couche v. Les éléments frontaux peuvent facilement être contournés, ce qui peut entraîner des risques de sécurité.

阿神

Chaque couche doit être réalisée avec un accent différent.

Nous ajoutons généralement une couche de service entre C-M de MVC (mais elle peut également être comprise comme faisant partie de C ou M. Cette couche est conçue pour être découplée de View et Controller, et peut être supprimée indépendamment vers l'extérieur (). API).

Alors,
Dans la Vue, effectuez un contrôle de légalité relativement faible d'une seule valeur,
Dans le contrôleur, vérifiez la légalité des paquets de requêtes externes et vérifiez certaines autorisations de l'interface utilisateur ; Effectuer une vérification stricte de la légalité des données, une vérification des contraintes de la logique métier et une vérification des autorisations des données utilisateur dans le service ; Effectuer une vérification de la légalité physique des données dans le modèle.

Peter_Zhu

Si le sujet a utilisé des frameworks tels que Django ou Flask de Python, vous constaterez qu'il existe également une classe Form. De manière générale, la logique de vérification du contenu utilisateur sera placée dans la classe Form. Car parfois, nous pouvons avoir besoin d'établir des règles de validation différentes pour le même modèle de données en fonction de différentes situations. Bien entendu, Django prend également en charge la vérification de la couche modèle. Relativement parlant. La couche Form fait cela avec un degré de couplage inférieur.

習慣沉默

Simple MVC effectue généralement la vérification FORM sur la couche modèle, tandis que les solutions plus matures séparent généralement FORM. Prenez Joomla comme exemple, elle a une couche FORM et est structurellement intégrée à la couche modèle. l'implémentation de la fonction semble n'avoir rien à voir avec la couche modèle.

PHPzhong

En fait, le contrôle de légalité est également divisé en côté local et côté serveur.
Par exemple, si l'entrée est vide, elle est vérifiée sur la couche V ; si le format d'entrée est incorrect, elle est vérifiée sur la couche M.
Si vous souhaitez vérifier davantage s'il est qualifié, vous pouvez le placer sur la couche M et le vérifier en accédant au serveur.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal