© svetabelaya/Shutterstock.com
Content in einer Blockstruktur

CMS-Funktionen für Symfony-Applikationen


Applikationen im Netz, z. B. für einen Shop, brauchen CMS-Funktionen. Viele Anwendungen laufen sogar mit einem Contentmanagementsystem im Hintergrund, obwohl Content nicht im Fokus der Seite steht. Einfache Textblöcke, ganze Seiten – sobald wir anfangen, HTML zur Wiederverwendung zu speichern, sind wir schon nah dran. Sollen solche Seiten oder Blöcke editierbar sein, sind wir definitiv im Aufgabenbereich eines CMS.

Artikelserie

Teil 1: Content in einer Blockstruktur

Teil 2: Routen, Navigation und Seiten

Am Ende gehört aber noch mehr zu den Funktionen eines CMS. Welche davon unsere Anwendung wirklich braucht, hängt ganz vom Umfeld des Projekts ab. Schaut man sich die verschiedenen Fullstack-CMS auf dem Markt an, sind die Möglichkeiten, aber auch die Unterschiede inzwischen sehr groß. Man könnte sagen: „Da ist für jeden etwas dabei.“ Die Entscheidung für das richtige Fullstack-CMS ist schon nicht einfach. Aber müssen wir denn unbedingt ein ganzes CMS aufsetzen? Was wenn wir schon eine bestehende Applikation haben? Wenn es sich hierbei noch um eine Symfony-Applikation handelt, würde ich euch in diesem und im folgenden Artikel eine Lösung vorschlagen. Auch wenn wir am Beispiel einer Symfony-Applikation arbeiten werden, soll das Nutzer anderer Frameworks nicht vom Lesen abhalten. Denn es geht auch um Konzepte, wie ihr Content handhabt, ohne ein vollständiges CMS aufzusetzen.

Ein CMS aufsetzen oder die nötigen Funktionalitäten selbst bauen?

Wir werden in den Beispielen immer wieder dem sogenannten Document Manager begegnen. Analog zum Object Manager für das ORM von Doctrine haben wir hier einen Manager für die PHPCR-Version von Doctrine geschaffen. Da wir hier durchgehend mit Dokumenten hantieren, sprechen wir vom Document Manager. Bis auf einige zusätzliche Methoden für die Übersetzungen hat der Document Manager dasselbe Interface wie der Object Manager. Methoden wie persist(), find() oder flush() sollten geübten ORM-Nutzern bekannt vorkommen.

Bei PHPCR handelt es sich aber nicht um eine neue Datenbank. Vielmehr ist PHPCR ein Interface, um hierarchisch strukturierte Daten auf eine einheitliche Art und Weise zugänglich zu machen. Am Ende läuft PHPCR wie das ORM beim Anwender auf einem MySQL- oder ähnlichem System. Das heißt, für die Persistenz der folgenden Beispiele müssen wir keine zusätzliche Datenbank aufsetzen, wenn unsere Anwendung diese so oder so schon bereitstellt. Die Abhängigkeiten dafür sind dann mit Hilfe von Symfony Flex und einem passenden Reze...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang