# 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.