Parametre v routách v MVC v PHP
V predchádzajúcej lekcii mali naše routy fixné adresy. V skutočnosti je mechanizmus routovania zložitejší - je možné dosiahnuť, že časť URI stránky sa dostane do pomenovaných parametrov, ktoré sú následne dostupné v kontroleri.
Nech napríklad naše adresy vyzerajú
takto: /test/param1/param2/,
kde param1 a param2 sú ľubovoľné
reťazce. Pritom chceme, aby adresy tohto
druhu spracovávala jedna akcia kontrolera.
Na to je potrebné vymyslieť názov parametra
a pred neho umiestniť dvojbodku, takto:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
V našom prípade to znamená, že všetky požiadavky
druhu /test/parameter1/parameter2/
budú smerovať na akciu act. Pričom
do prvého parametra tejto akcie sa dostane
asociatívne pole s parametrami:
text, ktorý bude na mieste prvého parametra,
sa dostane do prvku poľa s kľúčom 'var1',
a text druhého parametra - do 'var2'.
Nech je napríklad v adresnom riadku zadané
nasledovné: /test/eee/bbb/. Pozrime sa,
čo bude obsahovať prvý parameter
akcie:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Vytvorte kontroler NumController,
a v ňom - akciu sum. Nech táto
akcia spracováva adresy nasledujúceho druhu:
/nums/:n1/:n2/:n3/, kde parametrami
budú nejaké čísla. Zabezpečte, aby
na obrazovku bola vypísaná suma zadaných čísel.