Պարամետրերը ռուտերում 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/, որտեղ պարամետրերը
կլինեն որոշ թվեր: Անեք այնպես, որ
էկրանին ցուցադրվի փոխանցված թվերի գումարը: