პარამეტრების გამოყენება რაუტებში MVC-ში PHP-ში
მოდით შევხედოთ აღწერილის გამოყენებას
უფრო რეალურ მაგალითზე. დავუშვათ, ჩვენი კონტროლერი
PageController შეიცავს გვერდების მასივს
(ეს მონაცემები მოდელმა უნდა მოგვაწოდოს, მაგრამ
მოდელებთან ჯერ არ გვაქვს შეხება, ამიტომ დავუშვათ
მონაცემები ჯერ უბრალოდ ინახება კონტროლერში):
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
}
?>
მოდით შევქმნათ მეთოდი show, რომელიც
ეკრანზე გამოიტანს გვერდს კონკრეტული
ნომრით (id):
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show()
{
// აქ გამოვიტანთ გვერდს კონკრეტული ნომრით
}
}
?>
დავუშვათ, მისამართზე /page/1/
გამოიტანოს პირველი გვერდის ტექსტი,
მისამართზე /page/2/ -
მეორე გვერდის ტექსტი და ა.შ. შევქმნათ
შესაბამისი რაუტი:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
რეალიზაცია გავუკეთოთ აღწერილ მეთოდს show:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show($params)
{
echo $this->pages[ $params['id'] ]; // გამოგვაქვს გვერდი ნომრის მიხედვით
}
}
?>
რეალიზაცია გაუკეთეთ კონტროლერს UserController,
რომელიც შეიცავს შემდეგ მასივს:
<?php
$this->users = [
1 => ['name'=>'user1', 'age'=>'23', 'salary' => 1000],
2 => ['name'=>'user2', 'age'=>'24', 'salary' => 2000],
3 => ['name'=>'user3', 'age'=>'25', 'salary' => 3000],
4 => ['name'=>'user4', 'age'=>'26', 'salary' => 4000],
5 => ['name'=>'user5', 'age'=>'27', 'salary' => 5000],
];
?>
კონტროლერში UserController, შექმენით
მეთოდი show, რომელიც გამოიტანს
მომხმარებელს კონკრეტული id-ით. დავუშვათ ის
იყოს ხელმისაწვდომი შემდეგი სახის მისამართზე:
/user/:id/.
კონტროლერში UserController, შექმენით
მეთოდი info, რომელიც გამოიტანს
მოცემული მომხმარებლის სახელს ან ასაკს. დავუშვათ ეს
მეთოდი იყოს ხელმისაწვდომი შემდეგი სახის მისამართზე:
/user/:id/:key/, სადაც key
ექნება მნიშვნელობა 'name', 'age'
ან 'salary'.
კონტროლერში UserController, შექმენით
მეთოდი all, რომელიც გამოიტანს
ყველა მომხმარებლის სიას ეკრანზე. დავუშვათ ეს მეთოდი
იყოს ხელმისაწვდომი შემდეგი სახის მისამართზე:
/user/all/ (აქ პარამეტრები არ იქნება).
კონტროლერში UserController, შექმენით
მეთოდი first, რომელიც გამოიტანს
N პირველი მომხმარებლის სიას ეკრანზე. დავუშვათ ეს
მეთოდი იყოს ხელმისაწვდომი შემდეგი სახის მისამართზე:
/user/first/:n/, სადაც პარამეტრში
იქნება მომხმარებელთა რაოდენობა, რომლების გამოტანაც
საჭიროა ეკრანზე.