Parametri u rutama u MVC u PHP
U prethodnoj lekciji naše rute su imale fiksne adrese. Zapravo, mehanizam rutiranja je složeniji - može se postići da deo URI adrese strane upadne u imenovane parametre, dostupne zatim u kontroleru.
Neka, na primer, naše adrese izgledaju
ovako: /test/param1/param2/,
gde su param1 i param2 proizvoljni
stringovi. Pristom mi želimo da adrese ovog
oblika budu obrađene jednom akcijom kontrolera.
Za ovo treba smisliti ime parametra
i ispred njega staviti dvotačku, ovako:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
U našem slučaju će ispasti da će svi zahtevi
oblika /test/parametar1/parametar2/
upasti na akciju act. Pristom
u prvi parametar ove akcije će
upasti asocijativni niz sa parametrima:
tekst koji će biti na mestu prvog parametra,
upada u element niza sa ključem 'var1',
a tekst drugog parametra - u 'var2'.
Neka, na primer, u adresnoj liniji bude otkucano
sledeće: /test/eee/bbb/. Hajde da
pogledamo šta će sadržati prvi parametar
akcije:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Napravite kontroler NumController,
a u njemu - akciju sum. Neka ova
akcija obrađuje adrese sledećeg oblika:
/nums/:n1/:n2/:n3/, gde parametrima
budu neki brojevi. Uredite tako da
na ekran bude ispisana suma prosleđenih brojeva.