Ich habe den folgenden Datenfluss für ein einfaches Login-Formular.
Benutzerzugriffs-Controller PHP-Datei. Der Controller enthält model.php und view.php
Der Benutzer sendet ein Formular, der Controller sendet POST-Daten an Modellmethoden und erhält ein Ergebnis zurück.
Der Benutzer ist angemeldet und wird vom Controller an eine andere Ansicht (Login-Erfolgsmeldung) weitergeleitet.
Momentan sind meine Ansichten statisches HTML (kein PHP), also hier ist meine Frage. Was ist der richtige Weg, um dem Benutzer eine Willkommensnachricht zu geben, z. B. "Hallo, Craig!"?
Ist die Ansicht erlaubt, PHP-Schnipsel, z. B.
%Vor%seit das Modell in der Controller-Datei geladen ist?
Danke!
Bearbeiten: Ist es besser, der Ansicht den Zugriff auf bestimmte Klassenmethoden zu erlauben, z. B.
? %Vor%im Gegensatz zu nur Variablen?
Basierend auf anderen Antworten habe ich einen sehr nützlichen Artikel gefunden, an dem Sie möglicherweise auch interessiert sind.
Sie können wirklich alles in eine Ansicht einfügen, die Sie möchten, aber um die MVC-Vorgehensweise besser zu befolgen, sollten Sie PHP in der Ansicht auf einfache echo
s oder print
s beschränken (möglicherweise sehr klein) Schleifen, obwohl auch diese im Controller / Modell vorberechnet werden können). Da dies der einzige Weg ist, um dynamischen Inhalt zu bekommen, wäre es ein wenig albern zu sagen, dass sie nicht erlaubt sind.
Die Idee der Ansicht ist, dass sie ein HTML-Look-and-Feel hat, so dass Front-End-Entwickler oder Leute, die PHP nicht kennen, leicht mit der Datei arbeiten können, ohne verwirrt zu werden / p>
Aktualisieren
Um mehr über MVC im Allgemeinen zu erfahren, können Sie einige davon sehen (es gibt eine Menge Tutorials da draußen):
Um konkrete Beispiele von PHP zu sehen, die MVC verwenden, schlage ich vor, einige der anspruchsvolleren Frameworks herunterzuladen (z. B. CodeIgniter , Symphony oder Drupal ) und einfach nur den Code durchsehen. Versuchen Sie herauszufinden, wie es funktioniert, und erstellen Sie anschließend die Funktionalität für ein einfaches artikelbasiertes System neu.
Hier sind einige Dinge, die Sie beachten müssen:
Wie bereits erwähnt, sind Ansichten in MVC- und MVC-inspirierten Mustern für die Präsentationslogik verantwortlich. Dazu gehören Dinge wie das Anzeigen von Fehlermeldungen und Paginierung. Zu diesem Zweck kann jede Ansicht mehrere Vorlagen verarbeiten.
View empfängt Informationen von der Modellschicht und verhält sich entsprechend. Die Art, wie die Informationen aus der Modellschicht in Ansichten landen, ist einer der wichtigsten Unterschiede in MVC-ischen Mustern:
klassisches MVC Muster
Strukturen aus der Modellschicht senden die Informationen zur Ansicht, wenn der Status des Modells geändert wurde. Dies geschieht über das Beobachtermuster .
Model2 MVC und HMVC Muster
View hat direkten Zugriff auf die Modellschicht und kann Informationen von ihr anfordern. Dies ist dem ursprünglichen Muster am nächsten.
MVVM und MVP Muster
View empfängt Informationen über den Controller, der es wiederum von der Modellschicht angefordert hat. Der weitere Unterschied in den Mustern ergibt sich aus dem, was die Daten tun, bevor sie zur Ansicht gelangen.
Was Sie jetzt zu haben scheinen, ist eigentlich nur eine Vorlage. Ähnlich einem, der in diesem Artikel beschrieben ist. Sie haben eine Struktur, in der die Präsentationslogik nicht enthalten ist. Auf lange Sicht wird dies dazu führen, dass die Präsentationslogik in den Controller geschoben wird.
Um die Willkommensnachricht anzuzeigen, sollte Ihre Ansicht von der Modellschicht den Namen des aktuellen Benutzers anfordern. Wenn die Modellschicht einen Fehlerstatus zurückgibt, wählen Sie die Fehlermeldungsvorlage aus und fügen Sie sie in das Layout ein.
Wenn der Name des Benutzers ohne Probleme aus der Modellschicht abgerufen wurde, wählen Sie die Vorlage aus, die die Begrüßung enthalten soll, legen Sie den Wert in der Vorlage fest und rendern Sie sie.
Die Idee, dass der Controller Modell und Ansicht initialisieren sollte, stammt von einer sehr primitiven Interpretation von MVC für das Web. Muster kennen sich als Seiten-Controller , der versuchte, MVC direkt auf statische Webseiten zu übertragen.
Meiner Meinung nach sollte dies die Reihenfolge sein:
Modell
Sie initialisieren die Struktur, über die Sie mit der Modellschicht arbeiten. Es wäre wahrscheinlich eine Art Service-Factory, mit der Sie Dinge wie Authentication
service für Logins und Library
service für den Umgang mit Dokumenten erstellen könnten. Sachen wie diese. Ich habe ein bisschen länger einen Kommentar zur Struktur der Modellschicht geschrieben. Sie könnten es nützlich finden.
Anzeigen
Sie erstellen eine View-Instanz basierend auf Informationen, die Sie aus dem Routing-Mechanismus gesammelt haben. Wenn Sie Model2 oder HMVC implementieren, benötigt Ihre Ansicht im Konstruktor eine Instanz von Service Factory .
Wenn Sie MVVM oder MVP implementieren, hat der Konstruktor von view keine besonderen Anforderungen.
Controller
Dies ist die letzte Struktur, die Sie erstellen, da der Controller dafür verantwortlich ist, Befehle sowohl an die Ansicht als auch an die Modellschicht zu senden, die sich dann ändern und dann den Status beider ändern. Daher sollte der Controller erwarten, im Konstruktor sowohl View- als auch Service Factory zu erhalten.
Nachdem die grundlegenden Elemente von MVC initialisiert wurden, rufen Sie eine Methode auf dem Controller auf und rendern die aktuelle Ansicht.
Denken Sie daran, dass dies eine sehr vereinfachte Beschreibung ist.
Tags und Links php model-view-controller