• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage zu MVC Struktur

Tronjer

Senior HTML'ler
Das ist zwar keine direkte PHP Frage, aber ich denke, dass ihr sie mir vielleicht trotzdem beantworten könnt.

Ich refakturiere gerade eine meiner in PHP geschriebenen Sites in Rails. Rails ist quasi die Ruby Variante von Zend Framework. Die ursprüngliche Seite war ohne Framework aufgebaut und bestand lediglich aus einzelnen Ordnern und Dateien.

Nun zur Frage: Die index.php sendet einen AJAX-Call an die target.php und übergibt dabei einige Daten. Die target.php wiederum verarbeitet diese Daten und liefert gerendertes HTML an die index.php zurück. Ich bin mir nun nicht sicher, wie ich die Dateien innerhalb des Frameworks richtig verteile. Die index.php ist ein View, aber was ist die target.php in der MVC-Struktur? Ein Partial, oder?

Und mal angenommen, die target.php soll die ihr übergebenen Daten erst in eine Datenbanktabelle schreiben, bevor sie das HTML rendert. Das heißt, ich sende einen asynchronen Server-Request, und als Partial existiert für die target.php auch keine Action im Controller. Wie stelle ich da die Verbindung zur Datenbank her, über einen Helper?
 
Hi,

also ich kenn nun Rails nicht und bei den ganzen Ajax geschichten bin ich auch noch ein Noob (muss mich da langsam mal einlesen :) )
Aber so wie ich das MVC Pattern verstehe ist dein target denn ein Controller. Normalerweise ist das so, dass du ein Request an einen FrontController abfeuerst, der entscheidet anhand des Requests welcher Controller und welche Action ausgeführt wird.

und wenn du mit dem Controller (target.php) noch an eine Datenbanktabelle willst müsstest du ein Model erstellen

Ansonsten wäre es ja n eigentlich das MVVM Pattern oder nicht?
 
Nö, es ist schon MVC. Der Browser sendet einen Request an den Router, dieser leitet ihn an den Controller weiter, der wiederum eine Verbindung zur Datenbank herstellt und den View ausliefert.

Angenommen die gesamte Website bestünde nur aus einzigen Seite (index), welche über die Root-URL ausgeliefert werden soll. Dann lege ich dazu ein Modul an, nennen wir es mal test, und in den Ordner test kommt die index.html. Im Router route ich nun test/index.html auf '/', und außerdem benötige ich noch einen test_controller mit der Action 'index'. Fertig ist die Website (ohne Model und Datenbank).

Der test_controller erbt vom application_controller, und die darin liegende Action 'index' ist leer. Sie muss zwar vorhanden sein, tut aber nichts, denn ein Ajax-Call ist JavaScript und gehört demzufolge in ein separates .js File und nicht in den Controller.

Und genau da liegt mein Problem. Der Controller erkennt, dass die Action nichts machen muss und liefert einfach nur das gewünschte Template auf der angegebenen Route aus.

Vergessen wir mal Rails und die Datenbank und bleiben nur bei Ajax,. Wie würde man das mit einem PHP Framework nach MVC strukturieren?
 
So, ich habe nun zwei Tage damit verbracht, herauszufinden wie Ajax on Rails im Zusammenspiel mit einer Controller Action funktioniert. Im Nachhinein ist es einfach, aber was es für mich kompliziert machte war, dass Ruby keine superglobals wie $_POST kennt und in Rails keine URL für Ajax-Requests spezifiziert wird. Statt dessen hat es etwas mit Parametern und naming conventions zu tun. Dann kann ich mich ja morgen vom Wochenende erholen. :D

Nebenbei bemerkt: War meine Fragestellung so unverständlich, oder arbeitet hier niemand mit Frameworks wie ZF oder Symfonie und Ajax?
 
Zuletzt bearbeitet:
Also ich muss sagen das ich noch mit keinem Framework gearbeitet habe und mit Ajax auch noch nicht.

Aber vielleicht lag es auch daran weil sich niemand mit Ruby auskennt bzw. Ruby on Rails :)
 
Zurück
Oben