assignments/Assignment_006/readme.md

75 lines
2.7 KiB
Markdown
Raw Normal View History

2023-12-11 14:15:59 +01:00
# 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.