assignments/Assignment_006/readme.md

2.7 KiB

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.

{
    "require": {
        "twig/twig": "^3.0"
    }
}

Laden Sie composer herunter und führen Sie dann folgendes Kommando im Verzeichnis aus, in dem auch die Datei composer.json liegt:

$ 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:

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:

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