Parametere i ruter i MVC i PHP
I forrige leksjon hadde rutene våre faste adresser. Egentlig er rutemekanismen mer komplisert - det er mulig å gjøre det slik at en del av URI-en til siden havner i navngitte parametere, som deretter blir tilgjengelige i kontrolleren.
La oss for eksempel si at adressene våre skal se ut
slik: /test/param1/param2/,
hvor param1 og param2 er vilkårlige
strenger. Samtidig ønsker vi at adresser av dette
slaget skal håndteres av en enkelt kontrollerhandling.
For å oppnå dette bør vi finne på et parameternavn
og sette et kolon foran det, slik:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
I vårt tilfelle vil det bety at alle forespørsler
av typen /test/parameter1/parameter2/
vil havne på handlingen act. Samtidig vil
den første parameteren til denne handlingen
inneholde en assosiativ array med parameterne:
teksten som står på plassen til den første parameteren,
havner i array-elementet med nøkkelen 'var1',
og teksten til den andre parameteren - i 'var2'.
La oss for eksempel si at følgende er skrevet i
adresselinjen: /test/eee/bbb/. La oss
se hva den første parameteren til handlingen
vil inneholde:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Opprett kontrolleren NumController,
og i den - handlingen sum. La denne
handlingen håndtere adresser av følgende type:
/nums/:n1/:n2/:n3/, hvor parameterne
er noen tall. Gjør slik at
summen av de overførte tallene vises på skjermen.