Je voulais juste quelques conseils sur la façon de faire des MVC. J'utilise codeigniter et je me demandais s'il valait mieux avoir un contrôleur par page pour un site web ou avoir un contrôleur pour toutes les pages?
Disons que j'ai un site Web simple où vous pouvez visiter la page d'accueil, vous connecter, créer un compte et contacter l'administrateur.
Serait-il préférable d'avoir ces contrôleurs: frontend (index), login, compte, contact OU avoir un contrôleur appelé frontend ou autre avec les actions telles que login, createAccount, contact?
Quand savez-vous s'il vaut mieux utiliser un contrôleur dans une situation?
Réponses:
Il est préférable d'avoir un contrôleur par unité logique, par exemple AccountController (connexion, enregistrement), PagesController (accueil, contact), Backend -> PagesController (créer, modifier, supprimer), UsersController (créer, modifier, supprimer), etc.
la source
@Rushino Vous avez deux «applications» ici - le front-end (pour les lecteurs) et le backend (pour les administrateurs). Pour chaque groupe de fonctionnalités, vous avez un contrôleur.
La connexion est un tel groupe, qui comprend la génération du formulaire HTML (les champs, l'appel de la vue), et la gestion du formulaire (la validation, la connexion avec le modèle). La «connexion» est donc un contrôleur avec deux actions - generateForm et handleForm.
Les pages sont divisées entre l'application frontale - qui ne montre que les pages - et l'application backend qui permet de les modifier, les supprimer, les créer et éventuellement les afficher d'une manière différente. La page d'accueil est `` juste une autre page '' sur la face avant au moins, elle s'inscrit donc dans le contrôleur de pages. Sur le backend, sa logique peut être suffisamment différente pour justifier un contrôleur complètement différent.
Pour les utilisateurs - si les utilisateurs peuvent s'enregistrer eux-mêmes, ils auront besoin d'un contrôleur frontal, mais sinon, tout ce qui concerne les utilisateurs va simplement dans le backend.
Notez que chacune des fonctions backend peut nécessiter à la fois un générateur et un gestionnaire. Ces choses peuvent être divisées en fichiers de configuration, cependant, avec un plugin qui est un générateur de formulaire générique.
En résumé, cela ressemble à ceci:
la source
Je pense que vous devriez utiliser un contrôleur par unité commerciale, comme OrdersController pour toutes les opérations liées aux commandes et autres. Je suis conscient que dans ce cas, les contrôleurs deviennent ÉNORMES, mais nous pouvons toujours utiliser des classes d'assistance pour déléguer des choses comme l'initialisation du modèle et des classes partielles pour répartir les actions dans des fichiers séparés.
Par exemple, je peux avoir OrdersController
Create.cs and OrdersController
fichiers List.cs pour la classe OrdersController chacun avec l'ensemble d'actions correspondant. Rend les choses beaucoup plus propres et conserve les opérations de commandes centralisées dans une seule classe de contrôleur.Juste mes 2 cents.
la source
Je pense que vous pourriez adopter une approche différente:
Un contrôleur principal comme porte d'entrée qui fournit une demande à des contrôleurs spécifiques. De cette façon, vous pouvez utiliser ce contrôleur frontal pour vérifier des choses courantes comme l'authentification des utilisateurs, Google Analitics et tout autre truc général que vous souhaitez faire et garder la structure MVC pure.
Ce n'est pas mon idée, mais Symfony Framework fonctionne de cette manière, donc je peux vous dire que d'après mon expérience, c'est une façon vraiment agréable et élégante d'implémenter un frontend.
la source