4 Stimmen

MVC für Dummies: Warum muss der Controller etwas an die Ansichten senden?

Wenn ich das richtig verstehe, dann ist die Funktion des Controllers die Verarbeitung von POST-Daten und die technischen Änderungen am Zustand der Anwendung (z.B. DB) über Model.

Soweit ich weiß, erhält View auch Daten aus dem Model.

So verstehe ich also den Arbeitsablauf:

Kundenanfrage --> App Front Controller --> (wenn Methode = POST --> Controller ) --> View --> zurück zum Kunden

Aquí Model wird verwendet von Controller zum Lesen und Schreiben von Daten und durch View um Daten zu lesen.

Der Controller wird also nicht jedes Mal verwendet, wenn die Seite geladen wird, sondern nur, wenn Anwendungsdaten hinzugefügt/aktualisiert werden. Die meiste Zeit wird der Controller umgangen.

Wie kommt es also, dass fast jede Ressource über MVC über Controller spricht, die Daten an Ansichten senden?

Ich versuche, eine Anwendung mit MVC-ähnlichen Muster zu schreiben. Also in meiner App Ansichten immer Daten für die Seite aus dem Modell erhalten. Wenn das Modell aktualisiert wird, füge ich die spezifische Modellaktualisierungszeit zum Memcache hinzu. Zur Laufzeit sucht jede Ansicht die letzte(n) Aktualisierungszeit(en) des/der zugehörigen Modells/Modelle und das letzte Mal, als der Cache für diese Ansicht generiert wurde. Wenn das Modell aktualisiert wurde, bevor der Cache gespeichert wurde, liest die Ansicht den Cache, andernfalls wird sie auf der Grundlage des aktualisierten Modells neu dargestellt.

0 Stimmen

Dies kann ein verwirrendes Thema sein, da MVC für das Web (zustandslos) anders ist als für SmallTalk (Desktop-Anwendung) beschrieben.

0 Stimmen

Was ist also im Web wichtiger als MVC der alten Schule? Ich bin wirklich daran interessiert, zu wissen, bevor ich zu weit in das Projekt und ändern Muster würde zu schwierig werden.

13voto

BoltClock Punkte 660640

Der Controller ist für die Darstellung von Ansichten auf der Grundlage der angeforderten Daten verantwortlich. Er ist dafür da, dass weder das Modell noch der View von der Anfrage wissen müssen. Ja, die Ansicht erhält Daten vom Modell, aber nicht immer direkt; der Controller muss je nach Anfrage auch einige Entscheidungen treffen.

Das ist in etwa so, als hätte man in einem Restaurant Kellner, die die Bestellungen der Kunden entgegennehmen und ihnen die Gerichte servieren können. Es sind nicht die Köche, die die Gerichte nach der Zubereitung herausbringen, sondern die Kellner. Es sind nicht die Kunden, die in die Küche gehen und nach dem Essen fragen; es sind die Kellner, die ihre Bestellungen aufnehmen und dann den Köchen mitteilen, was sie für wen zubereiten sollen. In gleicher Weise ist der Kontrolleur dafür da, die Wünsche der Kunden zu erfüllen, ganz gleich, welcher Art sie sind. Das ist zwar ein sehr grober Vergleich, aber ich hoffe, Sie können sich ein Bild davon machen.

2voto

Femaref Punkte 59547

Es sei denn, ich habe Ihre Frage falsch interpretiert: Das Problem ist, dass die Ansicht direkt auf das Modell zugreift. Das sollte nicht passieren, da es den Grund für das MVC-Muster zunichte macht. Der View sollte nichts über das Model selbst wissen, so dass das Model gegen etwas anderes ausgetauscht werden kann - der Controller sollte die Daten (meist in abgeflachter oder projizierter Form) an den View liefern.

Wenn ich es täte: Der Controller wird nie überbrückt. Nur weil er nichts mit den Daten macht, heißt das nicht, dass er nicht gebraucht wird - er bietet eine Abstraktionsschicht zwischen Modell und Ansicht. Es geht darum, das Modell austauschen zu können, ohne die Ansicht anpassen zu müssen.

1voto

Brettski Punkte 18285

Der Controller wird nie umgangen, denn er ist erforderlich, um festzulegen, welche Ansichten angezeigt werden und welche Daten (falls vorhanden) in diesen Ansichten verwendet werden. Jede Get- oder Post-Anfrage an eine MVC-Site verwendet den Controller, um zu steuern, was dem Client angezeigt oder von ihm gesammelt wird.

Im Kern dient MVC der Trennung von Anliegen. Das Modell arbeitet mit den Daten, die Ansichten kümmern sich um die Präsentation und der Controller liefert die Logik zwischen den beiden.

1voto

wizztjh Punkte 6849

Wenn Sie eine Person sind, die schneller lernt, indem sie sich die Hände mit Codes schmutzig macht oder etwas Visuelles sucht, wie ich ....

Ich schlage vor, Sie folgen dem Tutorial in schienen-fuer-zombies.org . Es ziemlich viel erklären alle grundlegenden mit Schienen, einschließlich MVC. Im Tutorial, Es erwähnen, dass, wenn Sie alle diese Logik in der Ansicht setzen, Es wird unordentlich sein. Der Code wird sux ein wenig, weil die Jungs, die Ihren Code verwenden möchten, mit Codes verwirrt werden. Indem man die ganze Logik in den Controller packt und sie im View ausgibt. Es wird sehr klar sein, für die Person, die in Ihre Codes aussehen.

1voto

T.Raghavendra Punkte 362

alt text

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X