Parametrlarin MVC-də PHP-də marşrutlarda istifadəsi
Əvvəlki dərsdə bizim marşrutlarımız sabit ünvanlara malik idi. Əslində marşrutlaşdırma mexanizmi daha mürəkkəbdir - elə etmək olar ki, səhifənin URI-nin bir hissəsi adlandırılmış parametrlərə düşsün və sonra nəzarətçidə əlçatan olsun.
Tutaq ki, məsələn, bizim ünvanlarımız belə görünür:
/test/param1/param2/,
burada param1 və param2 ixtiyari
sətirlərdir. Eyni zamanda biz istəyirik ki, bu cür
ünvanlar bir nəzarətçi hərəkəti tərəfindən idarə olunsun.
Bunun üçün parametr üçün bir ad düşünmək lazımdır
və onun qarşısına iki nöqtə qoymaq lazımdır, belə:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Bizim vəziyyətimizdə belə çıxacaq ki, bütün sorğular
/test/parametr1/parametr2/ növündə olanlar
act hərəkətinə düşəcək. Eyni zamanda bu hərəkətin
ilk parametrinə parametrləri olan assosiativ massiv düşəcək:
birinci parametrin yerində olan mətn,
açarı 'var1' olan massiv elementinə düşəcək,
ikinci parametrin mətni isə - 'var2'-yə düşəcək.
Tutaq ki, məsələn, ünvan sətirində aşağıdakı yazılıb:
/test/eee/bbb/. Gəlin görək hərəkətin ilk parametrində
nə olacaq:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
NumController nəzarətçisini edin,
onun içində isə - sum hərəkətini edin. Bu
hərəkət aşağıdakı növdə olan ünvanları idarə etsin:
/nums/:n1/:n2/:n3/, burada parametrlər
müəyyən ədədlər olacaq. Elə edin ki,
ekrana ötürülən ədədlərin cəmi çıxsın.