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. 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 | | # | Ausgabe | Thema | Fällig am 📆 | Musterlösung |
|----|------------|-----------------------------------------------------------|----------------|----------------| |----|------------|-------------------------------------------------------------|----------------|----------------|
| 1. | 09.10.2023 | [Fanseite ohne Styling](Assignment_001/readme.md) | **15.10.2023** | | | 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** | | | 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** | | | 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/) | | 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** | | | 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** | |