Parametry v routách v MVC v PHP
V předchozí lekci měly naše routy pevné adresy. Ve skutečnosti je mechanismus routování složitější - lze zařídit, aby část URI stránky přecházela do pojmenovaných parametrů, dostupných poté v kontroleru.
Předpokládejme, že naše adresy budou vypadat
takto: /test/param1/param2/,
kde param1 a param2 jsou libovolné
řetězce. Přitom chceme, aby adresy tohoto
druhu byly zpracovávány jednou akcí kontroleru.
K tomu je třeba vymyslet název parametru
a před něj umístit dvojtečku, takto:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
V našem případě to bude znamenat, že všechny požadavky
druhu /test/parametr1/parametr2/
budou směřovat na akci act. Přitom
do prvního parametru této akce bude
přicházet asociativní pole s parametry:
text, který bude na místě prvního parametru,
přejde do prvku pole s klíčem 'var1',
a text druhého parametru - do 'var2'.
Předpokládejme, že v adresním řádku je zadáno
následující: /test/eee/bbb/. Podívejme se,
co bude obsahovat první parametr
akce:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Vytvořte kontroler NumController,
a v něm - akci sum. Nechť tato
akce zpracovává adresy následujícího druhu:
/nums/:n1/:n2/:n3/, kde parametry
budou určitá čísla. Zařiďte, aby
na obrazovku byla vypsána suma předaných čísel.