Parameter in Routen in MVC in PHP
In der vorherigen Lektion hatten unsere Routen feste Adressen. Tatsächlich ist der Routing-Mechanismus komplexer - man kann es so einrichten, dass ein Teil der URI-Seite in benannten Parametern landet, die dann im Controller verfügbar sind.
Nehmen wir an, unsere Adressen sollen folgendermaßen
aussehen: /test/param1/param2/,
wo param1 und param2 beliebige
Zeichenketten sind. Dabei wollen wir, dass Adressen dieses
Typs von einer Controller-Aktion verarbeitet werden.
Dazu sollte man sich einen Parameternamen ausdenken
und davor einen Doppelpunkt setzen, wie hier:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
In unserem Fall wird das dazu führen, dass alle Anfragen
der Art /test/Parameter1/Parameter2/
auf die Aktion act treffen. Dabei
wird in den ersten Parameter dieser Aktion
ein assoziatives Array mit Parametern übergeben:
Der Text, der an der Stelle des ersten Parameters steht,
landet im Array-Element mit dem Schlüssel 'var1',
und der Text des zweiten Parameters - in 'var2'.
Nehmen wir zum Beispiel an, in der Adresszeile wurde
folgendes eingegeben: /test/eee/bbb/. Lassen Sie uns
sehen, was der erste Parameter der Aktion
enthalten wird:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Erstellen Sie den Controller NumController,
und darin - die Aktion sum. Lassen Sie diese
Aktion Adressen folgender Art verarbeiten:
/nums/:n1/:n2/:n3/, wobei die Parameter
bestimmte Zahlen sind. Sorgen Sie dafür, dass
die Summe der übergebenen Zahlen auf dem Bildschirm ausgegeben wird.