Anforderungen

Kontext

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:

  1. Setup
  2. Creating Pages
  3. Routing
  4. Controller
  5. Templates
  6. Configuration

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!

Basisfunktionalität

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.

Referenzen & Literatur

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