Parametru izmantošana maršrutos MVC PHP
Apskatīsim aprakstītā pielietojumu
uz reālāka piemēra. Pieņemsim, ka mūsu kontrolieris
PageController satur lapu masīvu
(šos datus vajadzētu atgriezt modelis, bet ar
modeļiem mēs vēl neesam izskatījuši, tāpēc ļaujiet
datiem pagaidām vienkārši glabāties kontrolierī):
<?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',
];
}
}
?>
Izveidosim darbību show, kas
parādīs ekrānā lapu ar noteiktu
numuru (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()
{
// šeit parādīsim lapu ar noteiktu numuru
}
}
?>
Pieņemsim, ka, piekļūstot adresei /page/1/
tiks parādīts pirmās lapas teksts,
piekļūstot adresei /page/2/ -
otras lapas teksts un tā tālāk. Izveidosim
atbilstošu maršrutu:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Realizēsim aprakstīto metodi 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'] ]; // izvadam lapu pēc numura
}
}
?>
Realizējiet kontrolieri UserController,
saturu šādu masīvu:
<?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],
];
?>
Kontrolierī UserController, izveidojiet
darbību show, kas parādīs
lietotāju pēc noteikta id. Ļaujiet tam
būt pieejamam pēc šāda veida adreses:
/user/:id/.
Kontrolierī UserController, izveidojiet
darbību info, kas parādīs
noteiktā lietotāja vārdu vai vecumu. Ļaujiet šai
darbībai būt pieejamai pēc šāda veida adreses:
/user/:id/:key/, kur key
būs vērtība 'name', 'age'
vai 'salary'.
Kontrolierī UserController, izveidojiet
darbību all, kas parādīs
visu lietotāju sarakstu ekrānā. Ļaujiet šai darbībai
būt pieejamai pēc šāda veida adreses:
/user/all/ (šeit nekādu parametru
nebūs).
Kontrolierī UserController, izveidojiet
darbību first, kas parādīs
pirmo N lietotāju sarakstu ekrānā. Ļaujiet šai
darbībai būt pieejamai pēc šāda veida adreses:
/user/first/:n/, kur parametrā
būs lietotāju skaits, kuru vajadzētu
parādīt ekrānā.