Erstelle eine Startseite für deine Übungen für alle deine Routes-Einträge eine gemeinsame Navigation.
Füge einen neuen Routes-Eintrag mit Pfad "/" ein:
$routes = [
'/' => 'NavigationController@home', /* NEU */
'/aufgabe/spam' => 'AufgabenController@spam',
// ... alle weiteren bestehenden Routes ...
];
Erstelle einen Controller NavigationController
und eine Methode home()
und eine View home.view.php
dazu. Erstelle erst mal manuell ein Array $navigation
mit allen bisherigen Links, die du als Menü haben willst:
class NavigationController {
public function home() {
$navigation = [
'/' => 'Navigation - Home',
'/aufgabe/spam' => 'Aufgaben - Spam',
// ... weitere Menüpunkte
];
}
}
Gib alle Links als Liste in home.view.php
aus:
<ul>
<?php foreach($navigation as $url => $label) : ?>
<li><a href=".<?= $url ?>"><?= $label ?></a></li>
<?php endforeach; ?>
</ul>
Fülle nun das Array $navigation
dynamisch aus der Routes-Tabelle. Für lesbare Beschriftungen kannst du z.B. die Stringfunktionen explode()
, str_replace()
und ucfirst()
benutzen.
class NavigationController {
public function home() {
global $routes;
$navigation = [];
foreach ($routes as $url => $ControllerMethod) {
// Aus $ControllerMethod ein lesbares Link-Label erzeugen.
// Aus 'AufgabenController@spam' soll z.B. 'Aufgaben - Spam' werden.
$navigationLabel = '...';
$navigation[$url] = $navigationLabel;
}
}
- Prüfe nun in der View, ob die Links vernünftige Beschriftungen haben und die Links korrekt funktionieren.
- Füge einen neuen Routes-Eintrag hinzu und schau, ob das neue Menü korrekt erscheint und funktioniert.