MVC da PHP da Routlarda Parametrlar
Oldingi darsda bizning routlarimiz belgilangan manzillarga ega edi. Aslida routlash mexanizmi ancha murakkab - URI ning bir qismi nomlangan parametrlar shaklida bo'lishi va keyin kontrollerda foydalanish mumkin.
Masalan, bizning manzillarimiz quyidagicha
ko'rinishga ega bo'lsin: /test/param1/param2/,
bu yerda param1 va param2 - ixtiyoriy
matnlar. Bunda biz shunday ko'rinishdagi manzillar
bitta kontroller harakati tomonidan boshqarilishini xohlaymiz.
Buning uchun parametr nomini topish kerak
va uning oldiga ikkita nuqta qo'yish kerak, mana shunday:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Bizning holatda shunday bo'ladi,
ya'ni /test/parametr1/parametr2/ ko'rinishidagi
barcha so'rovlar act harakatiga yo'naltiriladi.
Bunda ushbu harakatning birinchi parametriga
parametrlar bilan assotsiativ massiv kiradi:
birinchi parametr o'rnida bo'lgan matn,
massivning 'var1' kalitli elementiga kiradi,
ikkinchi parametr matni esa 'var2' ga kiradi.
Masalan, manzil satrida quyidagi kiritilgan bo'lsin: /test/eee/bbb/. Keling
harakatning birinchi parametrida nima bo'lishini
ko'rib chiqaylik:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
NumController kontrollerini yarating,
unda - sum harakatini yarating. Ushbu
harakat quyidagi ko'rinishdagi manzillarni boshqarsin:
/nums/:n1/:n2/:n3/, bu yerda parametrlar
ba'zi sonlar bo'lsin. Ekranda uzatilgan sonlar
yig'indisi chiqarilishi uchun sozlang.