Parametrų panaudojimas MVC maršrutuose PHP
Pažiūrėkime aprašyto panaudojimą
realistesniame pavyzdyje. Tarkime, mūsų kontroleris
PageController turi puslapių masyvą
(šiuos duomenis turėtų grąžinti modelis, tačiau su
modeliais dar nesiginčijome, todėl kol kas tegul
duomenys tiesiog laikomi kontroleryje):
<?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',
];
}
}
?>
Sukurkime veiksmą show, kuris
atvaizduos ekrane puslapį su tam tikru
numeriu (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()
{
// čia atvaizduosime puslapį su tam tikru numeriu
}
}
?>
Tegul kreipiantis į adresą /page/1/
bus atvaizduojamas pirmojo puslapio tekstas,
kreipiantis į adresą /page/2/ -
antrojo puslapio tekstas ir taip toliau. Sukurkime
atitinkamą maršrutą:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Įgyvendinkime aprašytą metodą 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'] ]; // atvaizduojame puslapį pagal numerį
}
}
?>
Įgyvendinkite kontrolerį UserController,
kuriame yra toks masyvas:
<?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],
];
?>
Kontroleryje UserController, sukurkite
veiksmą show, kuris atvaizduos
vartotoją pagal nurodytą id. Tegul jis
būna prieinamas adresu, kurio formatas:
/user/:id/.
Kontroleryje UserController, sukurkite
veiksmą info, kuris atvaizduos
nurodyto vartotojo vardą arba amžių. Tegul šis
veiksmas būna prieinamas adresu, kurio formatas:
/user/:id/:key/, kur key
gali turėti reikšmę 'name', 'age'
arba 'salary'.
Kontroleryje UserController, sukurkite
veiksmą all, kuris atvaizduos
visų vartotojų sąrašą ekrane. Tegul šis veiksmas
būna prieinamas adresu, kurio formatas:
/user/all/ (čia jokių parametrų
nebus).
Kontroleryje UserController, sukurkite
veiksmą first, kuris atvaizduos
N pirmųjų vartotojų sąrašą ekrane. Tegul šis
veiksmas būna prieinamas adresu, kurio formatas:
/user/first/:n/, kur parametre
bus nurodytas vartotojų skaičius, kurį reikia
atvaizduoti ekrane.