Параметрҳо дар роутҳо дар 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/, ки параметрҳо баъзе ададҳо хоҳанд буд. Чунон кунед, ки ба экран ҷамъи ададҳои интиқолдодашуда бароварда шавад.