
MVC Modell für eine Webapplikation
Allgemeines
Der Ablauf bei einer Umsetzung des MVC Konzept im Web ist immer etwa gleich:
- Der Browser ruft den Controller auf
- Der Controller entscheidet was geschehen soll
- Der Controller ruft die notwendigen Daten vom Modell ab
- Der Controller ruft die Darstellung mit den abgerufenen Daten auf
- Die View gibt die Daten formatiert aus
Im ZMS wurde das genau so implementiert mit der Ausnahme, dass das Modell Service und die Darstellung Frontend heisst. Im ZMS wird der Controller im Featurestyle eingetragen und der Controller übernimmt dann die Erstellung des Services und des Frontends. Dazu müssen die Dateien und die darin enthaltenen Klassen korrekt benannt und in einem Ordner gespeichert werden, der so heisst wie der Featurestyle.
Beispiel Featuresytle Newslist:
Dateien:
- Controller: code/featurestyles/newslist/newslistcontroller.class.php
- Frontend: code/featurestyles/newslist/newslistfrontend.class.php
- Service: code/featurestyles/newslist/newslistservice.class.php
Klassen:
- NEWSLISTCONTROLLER (abgeleitet von FEATURESTYLECONTROLLER)
- NEWSLISTFRONTEND (abgeleitet von FEATURESTYLEFRONTEND)
- NEWSLISTSERVICE (abgeleitet von FEATURESTYLESERVICE)
Zwei kurze Codebeispiele im Anschluss sollen den Einsatz des MVC Konzepts im ZMS zeigen.
Beispiel 1: Featurestyle Simpletext
In diesem Beispiel besteht der Featurestyle nur aus einem Wort text. Da die featureeigenen Wörter und Medien immer mitgeladen werden stehen diese bereits zur verfügung und müssen nicht abgerufen werden, womit der Service entfällt. Auch der Controller muss keine Arbeit erledigen da die Basisklasse, sofern die Run-Methode nicht überschrieben wird, die Display-Routine des Frontend aufruft. Die Codes sehen wie folgt aus:
Beispiel 2: Featurestyle Newslist
Im zweiten Beispiel wird eine Liste von News dargestellt. Die News sind im Featurestyle NEWSDETAILCONTROLLER gespeichert. Im Controller werden die Newsfeatures über den Service abgerufen und dann an das Frontend zur Darstellung übergeben. Die Codes sehen wie folgt aus: