Parametre i ruter i MVC i PHP
I den forrige lektion havde vores ruter faste adresser. Faktisk er routing-mekanismen mere avanceret - det er muligt at gøre så en del af URI'en ender i navngivne parametre, der derefter er tilgængelige i controlleren.
Lad os for eksempel sige, at vores adresser skal se ud
sådan her: /test/param1/param2/,
hvor param1 og param2 er vilkårlige
strenge. Samtidig ønsker vi, at adresser af denne
type håndteres af en enkelt controller-handling.
For at gøre dette skal du finde på et parameternavn
og sætte et kolon foran det, sådan her:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
I vores tilfælde vil det betyde, at alle anmodninger
af typen /test/parameter1/parameter2/
vil blive sendt til handlingen act. Mens
den første parameter til denne handling vil
indeholde et associativt array med parametre:
teksten, der står på den første parameters plads,
ender i array-elementet med nøglen 'var1',
og teksten fra den anden parameter - i 'var2'.
Lad os for eksempel sige, at følgende er indtastet
i adresselinjen: /test/eee/bbb/. Lad os
se, hvad den første parameter til handlingen
vil indeholde:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Opret controlleren NumController,
og i den - handlingen sum. Lad denne
handling håndtere adresser af følgende type:
/nums/:n1/:n2/:n3/, hvor parametrene
er nogle tal. Gør så summen af de overførte tal
bliver vist på skærmen.