Buch-Leihe & -Rückgabe

Die Buchregal-Applikation soll über die Möglichkeit verfügen, dass Bücher ausgeliehen und wieder zurückgegeben werden können. Aus diesem Grunde wird nun zunächst das Template index.html.twig um eine weitere Spalte in der Tabelle zur Aufnahme der möglichen Benutzerinteraktionen zu einem Buch erweitert. Diese Benutzerinteraktionen sind einmal das Entleihen und die Rückgabe. Dabei ist einer der Links deaktiviert, je nach Leihstatus, den das Buch momentan hat:

Innerhalb des Templates werden mit Hilfe von Variablendarstellungen wie {{path('buch_zurueckgeben',{'id':buch.id})}} Links generiert. Hierbei wird der Name der Funktion, mit dem er im BuchController benannt werden wird, genutzt. Weiterhin werden der Funktion im Kontroller Parameter übergeben. Symfony sorgt selbständig dafür, dass der korrekte Link generiert wird.

Folgende Funktionen werden dem BuchController.php hinzugefügt:

Beide Funktionen sind ähnlich aufgebaut. Zunächst wird Doctrine bemüht, das Buchobjekt unter der übergebenen Id aus der Datenbank zu laden. Auf diesem Buch-Objekt wird dann die ausleihen()– oder zurueckgeben()-Funktion ausgeführt, die ein Entleihungs-Objekt generiert. Über den Manager von Doctrine wird das Objekt in die Datenbank persistiert. Dazu muss auf dem Manager die Funktion persist() für jedes zu persistierende Objekt ausgeführt werden. Mit flush() werden die Änderungen schließlich in die Datenbank geschrieben. Eine Flash-Nachricht über das erfolgreiche Leihen bzw. die Rückgabe wird erzeugt. Diese wird näher in dem Abschnitt über Flashnachrichten behandelt. Dann erfolgt ein Redirect auf die Hauptseite buch_index. buch_index ist hierbei wieder der Name, der innerhalb des Kontrollers BuchController.php der Funktion gegeben worden ist.

Die neu benötigten Funktionen innerhalb Buch.php sehen wie folgt aus:

Im Entleihen-Fall wird ein neues Entleihungsobjekt erstellt. Im Rückgabe-Fall wird schon in der Datenbank enthaltene Objekt der Entleihung geholt und modifiziert. Durch den Kontroller BuchController.php werden in beiden Möglichkeiten die Objekte persistiert.

Der Einfachheit halber wird an dieser Stelle darauf verzichtet, zu prüfen, ob ein zu leihendes Buch tatsächlich momentan sich im ungeliehenen Zustand befindet und umgekehrt, ob ein Buch, welches zurückgegeben wird, auch tatsächlich geliehen ist. Diese Abfrage kann jedoch einfach eingebaut werden.

Schreibe einen Kommentar

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