Ich wollte nur einen Rat bezüglich der MVC-Vorgehensweise. Ich verwende Codeigniter und habe mich gefragt, ob es besser ist, einen Controller pro Seite für eine Website oder einen Controller für alle Seiten zu haben.
Angenommen, ich habe eine einfache Website, auf der Sie die Startseite besuchen, sich anmelden, ein Konto erstellen und den Administrator kontaktieren können.
Wäre es besser, diese Controller zu haben: Frontend (Index), Login, Account, Kontakt ODER einen Controller namens Frontend oder was auch immer mit den Aktionen Login, CreateAccount, Contact?
Wann wissen Sie, ob es in einer Situation besser ist, einen Controller zu verwenden?
Antworten:
Es ist besser, Controller pro Logikeinheit zu haben, zum Beispiel AccountController (Login, Registrierung), PagesController (Home, Kontakt), Backend -> PagesController (Erstellen, Bearbeiten, Löschen), UsersController (Erstellen, Bearbeiten, Löschen) und so weiter.
quelle
@Rushino Sie haben hier zwei "Apps" - das Front-End (für Leser) und das Back-End (für Administratoren). Für jede Funktionsgruppe haben Sie einen Controller.
Die Anmeldung ist eine solche Gruppe, die die Erzeugung des Formular-HTML (die Felder, die Ansicht aufrufend) und die Behandlung des Formulars (die Validierung, die Verbindung mit dem Modell) umfasst. 'Login' ist also ein Controller mit zwei Aktionen - generateForm und handleForm.
Pages ist unterteilt in die Front-End-App, in der nur Seiten angezeigt werden, und in die Back-End-App, in der sie bearbeitet, gelöscht, erstellt und möglicherweise auf andere Weise angezeigt werden können. Die Homepage ist mindestens eine 'andere Seite' im Frontend, passt also in den Seiten-Controller. Auf dem Backend könnte seine Logik so unterschiedlich sein, dass es einen völlig anderen Controller rechtfertigt.
Für Benutzer - Wenn Benutzer sich registrieren können, benötigen sie einen Frontend-Controller. Wenn nicht, wird alles, was mit Benutzern zu tun hat, im Backend ausgeführt.
Beachten Sie, dass für jede Backend-Funktion möglicherweise sowohl ein Generator als auch ein Handler erforderlich sind. Diese Dinge können jedoch mit einem Plugin, das ein generischer Formulargenerator ist, in Konfigurationsdateien aufgeteilt werden.
Zusammenfassend sieht es so aus:
quelle
Ich denke, Sie sollten einen Controller pro Geschäftseinheit wie OrdersController für alle Vorgänge im Zusammenhang mit Aufträgen und dergleichen verwenden. Mir ist bekannt, dass Controller in diesem Fall RIESIG sind, aber wir können immer noch Hilfsklassen verwenden, um Dinge wie Modellinitialisierung und Teilklassen zu delegieren, um Aktionen in separaten Dateien zu verteilen.
Beispielsweise kann ich OrdersController
Create.cs and OrdersController
List.cs-Dateien für die OrdersController-Klasse mit den entsprechenden Aktionen haben. Macht die Dinge viel sauberer und sorgt dennoch für zentralisierte Auftragsvorgänge in einer einzigen Steuerungsklasse.Nur meine 2 Cent.
quelle
Ich denke, Sie könnten einen anderen Ansatz wählen:
Eine Hauptsteuerung als Vordertür, die Anforderungen an bestimmte Steuerungen liefert. Auf diese Weise können Sie diesen Front-Controller verwenden, um allgemeine Dinge wie Benutzerauthentifizierung, Google Analytics und andere allgemeine Dinge zu überprüfen, die Sie tun möchten, und die MVC-Struktur rein zu halten.
Dies ist nicht meine Idee, aber Symfony Framework funktioniert auf diese Weise, sodass ich Ihnen sagen kann, dass dies meiner Erfahrung nach eine sehr schöne und elegante Art ist, ein Frontend zu implementieren.
quelle