Update of exercises

master
Thomas Smits 2023-12-11 14:15:59 +01:00
parent 3fc522d4da
commit 29d5d9cf5d
2 changed files with 83 additions and 7 deletions

View File

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

View File

@ -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** | |