Параметри у рутевима у MVC у PHP
У претходној лекцији наши рутови су имали фиксне адресе. Заправо механизам рутирања је сложенији - може се урадити тако да део URI странице упада у именоване параметре, доступне затим у контролеру.
Нека, на пример, наше адресе изгледају
овако: /test/param1/param2/,
где су param1 и param2 произвољни
стрингови. При томе желимо да адресе таквог
вида рукује једна акција контролера.
Зато треба смислити име параметра
и пред њим ставити двотачку, ево овако:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
У нашем случају ће испасти да сви захтеви
вида /test/параметар1/параметар2/
ће упадати на акцију act. При
томе у први параметар ове акције ће
упадати асоцијативни низ са параметрима:
текст, који ће бити на месту првог параметра,
упада у елемент низа са кључем 'var1',
а текст другог параметра - у 'var2'.
Нека, на пример, у адресној линији је укуцано
следеће: /test/eee/bbb/. Хајде да
погледамо шта ће садржати први параметар
акције:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Направите контролер NumController,
а у њему - акцију sum. Нека ова
акција рукује адресама следећег вида:
/nums/:n1/:n2/:n3/, где параметрима
буду неки бројеви. Направите тако да
на екран буде исписана сума прослеђених бројева.