diff --git a/Assignment_006/readme.md b/Assignment_006/readme.md new file mode 100644 index 0000000..c7b6114 --- /dev/null +++ b/Assignment_006/readme.md @@ -0,0 +1,75 @@ +# Filmdatenbank mit PHP und Twig + +📆 **Fällig: 17.12.2023** 📆 + +Ziel dieser Übung ist es, bei der Filmdatenbank aus der letzten Übung zu einer besseren Trennung von PHP und HTML-Code zu kommen. Hierzu wird die Template-Sprache Twig eingesetzt. + +## Lernziele + + * Serverseitige Programmierung mit PHP + * Grundlegende PHP Sprach- und Kontrollstrukturen + * Einbinden von Bibliotheken mit `composer` + * Verwendung einer Template-Sprache + +## Teil 1: Twig einbinden + +Kopieren Sie Ihre vorhergehende Version der Filmdatenbank und binden Sie Twig ein, indem Sie eine entsprechende `composer.json`-Datei schreiben und `composer` ausführen. + +```json +{ + "require": { + "twig/twig": "^3.0" + } +} +``` + +Laden Sie [composer herunter](https://getcomposer.org/) und führen Sie dann folgendes Kommando im Verzeichnis aus, in dem auch die Datei `composer.json` liegt: + +```console +$ php composer.phar install +No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. +Loading composer repositories with package information +Updating dependencies +... +$ +``` + +Es entsteht ein neues Verzeichnis `vendor`, in dem sich die Bibliotheken befinden. + +Sie können jetzt `Twig` in ihren eigenen Programmen benutzen, indem Sie die folgenden Anweisungen an den Anfang Ihres PHP-Skripte stellen: + +```php +require_once __DIR__ . '/vendor/autoload.php'; + +use Twig\Environment; +use Twig\TwigFilter; +use Twig\Loader\FilesystemLoader; +``` + +## Teil 2: Dynamische Webseite + +Programmieren Sie die PHP-Webseite aus der vorhergehenden Übung so um, dass sie die HTML-Ausgabe mit Twig macht. Der PHP-Code sollte danach vollkommen frei von HTML-Code sein, der sich ausschließlich im Twig-Template befindet. + +Sie rendern ein Template, indem Sie folgenden Code verwenden: + +```php +... +$loader = new FilesystemLoader('.'); +$twig = new Environment($loader); +echo $twig->render('index.html.twig', [ 'filme' => $filme ]); +``` + +Hierbei ist `index.html.twig` der Name des Templates und `$filme` das Array mit der Filmliste. + + +## Abgabe + +Verwenden Sie das Ihnen zugeordnete Git-Repository und legen Sie für jedes Assignment einen Ordner an: `Assignment_01`, `Assignment_02`, ... + +Innerhalb des Ordners für das Assignment legen Sie bitte folgende drei Ordner an: + + * `src`: Der Source-Code, der nicht im Webroot liegen soll / kann + * `doc`: Zusätzliche Dokumentation, die Sie zur Verfügung stellen wollen + * `site`: Die fertige Webanwendung. Dieser Ordner ist das _Webroot_ der Anwendung + +Legen Sie die Lösung so in Ihrem Repository ab, dass man das Repository einfach clonen kann, dann in den Ordner `site` geht und dort einen Webserver (z.B. `php -S localhost:8080`) starten kann. Die Seite sollte dann korrekt aufrufbar sein. \ No newline at end of file diff --git a/readme.md b/readme.md index 135fa59..65093d7 100644 --- a/readme.md +++ b/readme.md @@ -10,10 +10,11 @@ Die Kursmaterialien finden Sie, wie immer, im [Moodle](https://moodle.hs-mannhei Hier finden Sie die wöchentlichen Assignments für die Vorlesung Webbasierte Systeme (WEB). Die Assignments sind unten, zusammen mit dem Fälligkeitsdatum, aufgelistet. -| # | Ausgabe | Thema | Fällig am 📆 | Musterlösung | -|----|------------|-----------------------------------------------------------|----------------|----------------| -| 1. | 09.10.2023 | [Fanseite ohne Styling](Assignment_001/readme.md) | **15.10.2023** | | -| 2. | 16.10.2023 | [Styling der Fanseite mit CSS](Assignment_002/readme.md) | **22.10.2023** | | -| 3. | 23.10.2023 | [Fanseite responsive machen](Assignment_003/readme.md) | **05.11.2023** | | -| 4. | 06.11.2023 | [Interaktive Filmdatenbank](Assignment_004/readme.md) | **19.11.2023** | [✅](Assignment_004/solution/) | -| 5. | 27.11.2023 | [Filmdatenbank mit PHP](Assignment_005/readme.md) | **10.12.2023** | | +| # | Ausgabe | Thema | Fällig am 📆 | Musterlösung | +|----|------------|-------------------------------------------------------------|----------------|----------------| +| 1. | 09.10.2023 | [Fanseite ohne Styling](Assignment_001/readme.md) | **15.10.2023** | | +| 2. | 16.10.2023 | [Styling der Fanseite mit CSS](Assignment_002/readme.md) | **22.10.2023** | | +| 3. | 23.10.2023 | [Fanseite responsive machen](Assignment_003/readme.md) | **05.11.2023** | | +| 4. | 06.11.2023 | [Interaktive Filmdatenbank](Assignment_004/readme.md) | **19.11.2023** | [✅](Assignment_004/solution/) | +| 5. | 27.11.2023 | [Filmdatenbank mit PHP](Assignment_005/readme.md) | **10.12.2023** | | +| 6. | 11.12.2023 | [Filmdatenbank mit PHP und Twig](Assignment_006/readme.md) | **17.12.2023** | |