HTML-Formulare

Es ist ärgerlich, dass die Applikation keine Funktionalität enthält, neue Bücher zu hinterlegen. Um ein neues Buch anzulegen muss der Umweg über die Datenbank gegangen werden.

Um ein neues Buch anzulegen müssen die Buchdaten, der Autor des Buches sowie sein Titel eingegeben werden. Dies führt zu einem Gebiet, mit welchem sich viele Webentwickler unentwegt beschäftigen und welches zusätzlich schwierig zu beherrschen ist: Die Nutzung von HTML-Formularen zum entgegennehmen von Informationen des Nutzers. Glücklicherweise weist Symfony eine einfache aber trotzdem mächtige Lösung auf, die nun vorgestellt wird. Zusätzlich wird der Programmierer von lästigen Sicherheitsfragen entbunden, da Symfony hier schon entsprechende Abwehrmechanismen beinhaltet. Der folgende Überblick ist keineswegs umfassend, sondern sollte nur als ein kurzer Einblick dienen.

Die Datei BuchController.php wird um die Funktion neuesBuch() erweitert:

Die Funktion kann nun nicht nur durch GET-Requests sondern auch durch POST-Requests aufgerufen werden. Im ersten Teil der Funktion wird die Funktion createFormBuilder() genutzt, um das Formular aufzubauen. Hierbei werden die einzelnen Felder übergeben, die das Formular anzeigen soll. Dies sind ein Text-Feld für den Autor mir dem Label ,,Autor“, ein weiteres Text-Feld für den Titel mit dem Label ,,Titel“ und zuletzt ein Submit-Button, der den Text ,,Buch anlegen“ trägt. Innerhalb des Return-Statements der Funktion, wird das Formular unter Aufruf der Funktion createView() dem Template übergeben.

Das Template neuesbuch.html.twig hat den folgenden einfachen Aufbau:

Nach dem Aufbau auf das Basistemplate base.html.twig wird der body-Block definiert. Hier wird der Kopf des Formulars geschrieben, dann dessen Inhalt und zuletzt dessen Abschluss.

Die Eingaben werden innerhalb der BuchController.php-Funktion, die schon oben eingefügt worden ist, verarbeitet. Mit der Funktion handleRequest($request) wird der Request verarbeitet. Ist das Formular abgeschickt worden und auch valide – Symfony hat er Möglichkeiten Einschränkungen für die Felder bereitzustellen – so werden die Daten des Formulars in das Objekt geladen, das Objekt in die Datenbank persistiert und mit einer entsprechenden Flash-Nachricht ein Redirect auf die Hauptseite mit der Buchliste durchgeführt.

Zuletzt enthält das Template index.html.twig einen Link auf die Funktionalität des Anlegen eines neuen Buches unter der bereitgestellten Tabelle:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert