Параметры ў роўтах у 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/, дзе параметрамі
будуць некаторыя дадатныя лікі. Зрабіце так, каб
на экран выводзілася сума перададзеных лікаў.