Parametry w trasach w MVC w PHP
W poprzedniej lekcji nasze trasy miały stałe adresy. W rzeczywistości mechanizm routingu jest bardziej złożony - można sprawić, że część URI strony trafiała do nazwanych parametrów, dostępnych następnie w kontrolerze.
Załóżmy, na przykład, że nasze adresy będą wyglądać
tak: /test/param1/param2/,
gdzie param1 i param2 to dowolne
ciągi znaków. Chcemy przy tym, aby adresy tego
typu były obsługiwane przez jedno działanie kontrolera.
Aby to zrobić, należy wymyślić nazwę parametru
i przed nią postawić dwukropek, tak:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
W naszym przypadku okaże się, że wszystkie żądania
typu /test/parametr1/parametr2/
będą trafiać do działania act. Przy
czym do pierwszego parametru tej akcji będzie
trafiać tablica asocjacyjna z parametrami:
tekst, który będzie na miejscu pierwszego parametru,
trafi do elementu tablicy z kluczem 'var1',
a tekst drugiego parametru - do 'var2'.
Załóżmy, na przykład, że w pasku adresu wpisano
następujące: /test/eee/bbb/. Spójrzmy,
co będzie zawierał pierwszy parametr
akcji:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Stwórz kontroler NumController,
a w nim - działanie sum. Niech to
działanie obsługuje adresy następującego typu:
/nums/:n1/:n2/:n3/, gdzie parametrami
będą jakieś liczby. Spraw, aby
na ekranie wyświetlała się suma przekazanych liczb.