In der vorherigen Übung haben Sie ein einfaches Lauftagebuch implementiert. Nun soll daraus eine richtige Web-Anwendung werden, die die Daten mehrerer Benutzer verwalten kann.
Das verbesserte Lauftagebuch hat folgende Eigenschaften:
-
Es soll mehrere Nutzer/innen ("Läufer") unterstützen, die sich mit Nutzername und Passwort bei der Anwendung anmelden können.
-
Jede/r Läufer/in hat ein eigenes Lauftagebuch mit Einträgen der bekannten Art:
- Datum, gelaufene Strecke und gelaufene Zeit
-
Die Daten sollen in einer (
SQLite
-)Datenbank gespeichert werden.
Literatur Einen sehr guten Einstieg in Symfony (bei dem Ihnen sehr vieles aus den Lehrvorträgen bekannt vorkommen sollte) finden in den 6 "Getting Started"-Kapiteln der offziellen Dokumentation:
Diese 6 Kapitel lassen sich tatsächlich linear lesen; aber ansonsten ist die Symfony-Doku ein echtes Hypertext-Dokument: Sie finden an allen Stellen Querverweise und am Ende jedes Doku-Artikels eine Liste mit verwandten Themen. Es lohnt sich, hier ein bisschen Zeit mit Lesen zu verbringen!
Die von Ihnen zu implementierende Symfony-Anwendung soll aus Nutzersicht folgende Ansichten untersützen:
- Läuferübersicht: Tabelle, die zeilenweise alle Läufer auflistet. Die Tabelle soll folgende Spalten haben:
- Läufername (= Nutzername)
- Anzahl der Lauftage
- Gesamte bisher gelaufene Strecke
- Läuferprofil: Beim Klick auf einen Läufernamen in der Übersicht soll man zum Profil des Läufers gelangen. Das Profil hat soll Folgendes anzeigen:
- Läufername
- Anzahl der Lauftage
- Gesamttage seit dem ersten Lauftag (bis heute, nicht bis zum letzten hinterlegten Lauftag)
- Gesamte bisher gelaufene Strecke
- Tabelle mit allen Laufeinträgen, absteigend sortiert nach Datum (neue Einträge oben). Diese Tabelle soll die folgenden Spalten haben:
- Datum
- Gelaufene Strecke
- Gelaufene Zeit
- Durchschnittgeschwindigkeit
- In jeder Zeile soll es eine Löschfunktion geben, die den betreffenden Laufeintrag löscht.
- Unter der Tabelle soll es ein Formular geben, um einen neuen Eintrag zum aktuell geöffneten Läuferprofil hinzuzufügen. Dabei werden vom Nutzer nur Datum, gelaufene Strecke und Zeit eingegeben; die Durchschnittsgeschwindigkeit soll die Anwendung selbst berechnen.
Sie brauchen keine "Bearbeiten"-Funktion für Laufeinträge implementieren; "Löschen" und "Hinzufügen" reicht. Es dürfen (anders als bei Übungsaufgabe 5) mehrere Laufeinträge eines Nutzers für den gleichen Tag existieren.
Für die Basisfunktionalität sollten Sie folgende Framework-Elemente verwenden (hilfreiche Links zu den jeweiligen Dokus sind jeweils aufgelistet):
- Model-Klassen um die o.g. Informationen in einer Datenbank speichern zu können. Denken Sie daran im Model zu Modellieren: Wenn also etwas in der echten Welt relevant ist, dann sollte es dazu eine Eigenschaft/Methode/Annotation/... in den Model-Klassen geben!
- Symfony-Doku: Doctrine ORM
- Doctrine-Doku; darin besonders: Datentypen und Eigenschaften und Assoziationen zw. Klassen
- Je einen Controller, um die o.g. Operationen (Anzeigen, Anlegen, Löschen) auszuführen. Symfony-Doku: Controller
- Controller müssen über eine Route erreichbar sein. Das URL-Format ist Ihnen überlassen. Symfony-Doku: Routing
- Twig-Templates zur Realisierung der verschiedenen Ansichten, die ein Nutzer zu sehen bekommt. Symfony-Doku: Templates
- Formular zur Erzeugung neuer Datensätze. Symfony-Doku: Formulare