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:

/project/config/routes.php<?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:

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use Core\Controller;
  
  class PageController extends Controller
  {
    public function act($params)
    {
      var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
    }
  }
?>
Задание 1

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.