Contenido Backend MVC-Beispiel

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Contenido Backend MVC-Beispiel

Beitrag von xmurrix »

Hallo zusammen,

in diesen Thread soll demonstriert werden, wie man das Contenido Backed ansatzweise in ein MVC-Pattern umstellt.

Das MVC-Pattern (Model View Controller) ist ein Architekturmuster, mit der eine Applikation in 3 Bereiche geteilt wird.

Model: Enthält die Geschäftslogik
View: Ist für die Ausgabe zuständig
Controller: Übernimmt die Steuerung und kann das Bindeglied zwischen Model und View sein.

Weitere Details zum MVC-Muster findet ihr bei Wikipedia.

Dieses Muster kann theoretisch auch auf das Contenido-Backend angewendet werden.

Bei einer MVC-Anwendung werden in der Regel über die URL der Controller und die entsprechende Action nach dem Schema /controller/action angesprochen.

Beispiel:

Code: Alles auswählen

/user/login
User-Controller und die Aktion "login"

Dieses Schema lässt sich auf Contenido adaptieren, dort gibt es die Parameter "area" und "action". Es wäre also damit folgendes möglich:

Code: Alles auswählen

Contenido area "con_editart" => Controller "con_editart"
Contenido action "con_edit"  => Action "con_edit"
Eine Contenido-Backend URL main.php?area=con_editart&action=con_edit lässt sich somit einem Controller und einer Action zuordnen.


Im Anhang findet ihr ein Plugin, in dem das Contenido-Backend "ansatzweise" MVC-fiziert wurde. Der Aufbau ähnelt dem einer auf Zend-Framework basierenden Applikation, wobei ich das "ähnelt" betonen möchte. Es verwendet keine Sourcen vom Zend-Framework und die Implementierung des MVC-Pattern ist nur in ansätzen vorhanden.
  • Es gibt eine Bootstrap-Datei, die noch nicht die komplette Backend-Initialisierung übernimmt
  • Der Controller ist sehr einfach gehalten und kann noch nicht vollständig in das Backend integriert werden
  • Die View ist eine erweiterte Variante der Template Klasse
  • Bei der Umsetzung des MVC-Patterns sowie anderer Features, wurde das Zend Framework als Beispiel hergenommen

Das Beispiel beinhaltet folgende Controller:
  • Index: zur Anzeige der Index-Seite
  • Strcorrect: Eine Beispielimplementation zur Behebung der Kategorieprobleme. Damit lassen sich manuell die pre/post/parent ids und der level der Kategorien setzen.
    Es wird eine Kategoriestruktur wie unter Artikel generiert, mit Klick auf den rechten Bereich einer Kategorie (dort, wo pre/post/parent und level ist), erscheint eine Art inside-Editing Ansicht der Kategorie.
    HINWEIS: Dieses Tool soll bei der Korrektur eine kaputten Kategoriestruktur helfen, es ist aber nicht bis ins kleinste Detail getestet worden.
    Daher ist die Verwendung auf eigene Gefahr und NICHT für die Korrektur der Kategoriestruktur eines Livesystems gedacht.
  • Templatecontrolexample: Eine Beispielimplementation eines Template Controls. Ein Template Controls ist ein Tag, ähnlich wie ein Modulcontainer im Layout. Damit lassen sich in Templates wiederverwendbare Komponenten integrieren.
  • Templatehelperexample: Eine Beispielimplementation eines Template Helpers. Mit einem Template Helper kann man z. B. eigene Platzhalter definieren, die dann bei der Ausgabe geparst werden.

Installation des Beispiels:
1. Die Inhalte des Zip in das Contenido-Verzeichnis kopieren
2. Im Contenido-Backend anmelden
3. Den Index-Controller mit Eingabe folgender URL in die Browserzeile aufrufen:
http://localhost/contenido/indexX.php?c ... ={your_sid}
TIP: Nach der Anmeldung steht in der Adresszeile "index.php". Es reicht aus, ein weiteres großes "X" vor der Endung anzugeben, also "indexX.php" und auf Enter drücken.


Einschränkungen:
1. Das Ganze ist in mehr ein Experiment, also nur Zum Testen gedacht
2. Damit lässt sich das Contenido Backend nicht vollständig auf MVC umstellen
3. Das MVC-Pattern ist in minimalster Form umgesetzt


Da im Forum schon eine Umfrage bezüglich der Erweiterung von Contenido läuft, möchte ich darauf hinweisen, dass ein Redesign des Core, eine Umstellung auf ein Framework oder gar auf das MVC-Pattern ein erheblicher Aufwand bedeuted und bei diesem Weg gibt es keine Abwärtskompatibilität.

Freue mich über Kritik und Anregungen...

Grüße
xmurrix
Dateianhänge
Contenido Backend MVC-Beispiel_20100202.zip
Contenido Backend MVC-Beispiel
(82.96 KiB) 173-mal heruntergeladen
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Contenido Backend MVC-Beispiel

Beitrag von idea-tec »

DAUMEN HOCH!!! :arrow: Unbedingt umsetzen!!!
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Antworten