Parametrai maršrutuose MVC PHP
Ankstesnėje pamokoje mūsų maršrutai turėjo fiksuotus adresus. Tiesą sakant, maršrutizavimo mechanizmas yra sudėtingesnis - galima padaryti taip, kad dalis URI puslapio patektų į pavadintus parametrus, prieinamus vėliau kontroleryje.
Tarkime, pavyzdžiui, mūsų adresai atrodys
taip: /test/param1/param2/,
kur param1 ir param2 - savavališki
tekstai. Tuo pačiu mes norime, kad tokio pobūdžio
adresus apdorotų vienas kontrolerio veiksmas.
Tam reikia sugalvoti parametro pavadinimą
ir prieš jį dėti dvitaškį, taip:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Mūsų atveju pasirodys, kad visi užklausų
pavidalo /test/parametras1/parametras2/
pateks į veiksmą act. Be to, į
pirmą šio veiksmo parametrą bus
perduodamas asociatyvus masyvas su parametrais:
tekstas, kuris bus pirmojo parametro vietoje,
pateks į masyvo elementą su raktu 'var1',
o antrojo parametro tekstas - į 'var2'.
Tarkime, pavyzdžiui, adreso eilutėje įvesta
tai: /test/eee/bbb/. Pažiūrėkime,
ką talpins pirmasis veiksmo parametras:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Sukurkite kontrolerį NumController,
o jame - veiksmą sum. Tegul šis
veiksmas apdoroja tokio pavidalo adresus:
/nums/:n1/:n2/:n3/, kur parametrais
bus tam tikri skaičiai. Padarykite taip, kad
ekrane būtų rodoma perduotų skaičių suma.