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/,
бу ерда параметрлар маълум сонлар бўлади.
Узгартирувчилар етишилган сонларнинг йиғиндиси
экранда чоп этилишини таъминланг.