Kategorien
Symfony

Tutorial: Symfony Administrations-Backend erstellen

In diesem Beitrag werde ich mit Symfony 4 eine Administartionsoberfläche mit Hilfe von Sonata erstellen und die einzelnen Schritte beschreiben.

1. Anlegen eines neuen Symfony Projektes

Mit composer kann man schnell ein neues Symfony Skeleton Projekt anlegen lassen:

composer create-project symfony/website-skeleton my-admin-demo

Das Skeleton Projekt enthält die wichtigsten Symfony Komponenten für eine Webapplikation sowie Doctrine.

Jetzt ist ein guter Zeitpunkt das Porjket in ein Versionierungsystem wie GIT einzuchecken und zum ersten mal zu committen.

Optional kann jetzt Symfony PHPUnit Bridge installiert werden, wenn Tests geschrieben werden sollen:

composer require phpunit --dev

Die Datenbank kann jetzt konfiguriert werden in der .env Datei:

DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name

Und mit folgendem Befehl angelegt werden:

php bin/console doctrine:database:create

2. Installation des SonataAdmin Bundles

Für die Erstellung von Administrationsoberflächen in Symfony ist das SonataAdmin Bundle erstellt worden und bietet alle Möglichkeiten, um einfache bis sehr umfangreiche Administrationsoberflächen zu realiseren.

composer require sonata-project/admin-bundle

Das SonataAdmin Bundle benötigt zur Kommunikation mit der Datenbank noch ein weiteres Bundle, im Falle von Doctrine:

composer require sonata-project/doctrine-orm-admin-bundle

Um das Backend anzeigen zu können, muss noch eine .htaccess Datei installiert werden, im Falle eines Apache Webservers:

composer require symfony/apache-pack

Dann sollte im Browser die SonataAdmin Oberfläche erscheinen unter:

https://localhost/my-admin-demo/public/admin/dashboard

SonataAdmin Oberfläche

Jetzt können eigene Administrationsoberflächen hinzugefügt werden: Sonata Dokumentation.

In den meisten Fällen soll der Administrationsbereich auch durch eine User Authentifizierung in Form eines Login-Formulars gesichert werden, dies kann mit Hilfe des SonataUserBundle oder auch ohne bewerkstelligt werden.