75 lines
2.7 KiB
Markdown
75 lines
2.7 KiB
Markdown
# 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. |