Parameetrid MVC ruutides PHP-s
Eelmises õppetükis olid meie ruutidel fikseeritud aadressid. Tegelikult on marsruutimise mehhanism keerulisem - võib teha nii, et osa URI lehest satub nimetatud parameetritesse, millele on siis juurdepääs kontrolleris.
Oletame, et meie aadressid näevad välja sellised:
/test/param1/param2/, kus param1 ja param2 on suvalised
stringid. Samas me soovime, et sellist tüüpi aadresse
töötleks üks kontrolleri tegevus.
Selleks tuleb välja mõelda parameetri nimi
ja selle ette panna koolon, nii:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Meie puhul saab nii, et kõik päringud
tüübiga /test/parameeter1/parameeter2/
suunatakse tegevusele act. Samal ajal
selle tegevuse esimesse parameetri satub
assotsiatiivne massiiv parameetritega:
tekst, mis on esimese parameetri kohal,
satub massiivi elemendile võtmega 'var1',
ja teise parameetri tekst - 'var2'.
Oletame, et aadressiribale on sisestatud
järgmine: /test/eee/bbb/. Vaatame,
mida sisaldab tegevuse esimene parameeter:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Tehke kontroller NumController,
ja selles - tegevus sum. Las see
tegevus töötleb järgmise välimusega aadresse:
/nums/:n1/:n2/:n3/, kus parameetriteks
on mingid numbrid. Tehke nii, et
ekraanile prinditakse edastatud arvude summa.