Použitie parametrov v routách v MVC v PHP
Pozrime sa na použitie opísaného na
reálnejšom príklade. Nech náš kontroler
PageController obsahuje pole stránok
(tieto údaje by mala odovzdávať model, ale s
modelmi sme sa ešte nezaoberali, preto nech
údaje zatiaľ jednoducho uložené v kontroleri):
<?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',
];
}
}
?>
Urobme akciu show, ktorá
bude zobrazovať na obrazovku stránku s určitým
číslom (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()
{
// tu zobrazíme stránku s určitým číslom
}
}
?>
Nech pri prístupe na adresu /page/1/
sa zobrazí text prvej stránky, pri
prístupe na adresu /page/2/ -
text druhej stránky atď. Vytvorme
príslušnú routu:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Realizujme opísanú metódu 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'] ]; // zobrazíme stránku podľa čísla
}
}
?>
Realizujte kontroler UserController,
obsahujúci nasledujúce pole:
<?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],
];
?>
V kontroleri UserController, urobte
akciu show, ktorá bude zobrazovať
užívateľa podľa určitého id. Nech je
dostupná na adrese nasledujúceho typu:
/user/:id/.
V kontroleri UserController, urobte
akciu info, ktorá bude zobrazovať
meno alebo vek daného užívateľa. Nech je
táto akcia dostupná na adrese nasledujúceho
typu: /user/:id/:key/, kde key
bude mať hodnotu 'name', 'age'
alebo 'salary'.
V kontroleri UserController, urobte
akciu all, ktorá bude zobrazovať
zoznam všetkých užívateľov na obrazovke. Nech je táto akcia
dostupná na adrese nasledujúceho typu:
/user/all/ (žiadne parametre tu
nebudú).
V kontroleri UserController, urobte
akciu first, ktorá bude zobrazovať
zoznam N prvých užívateľov na obrazovke. Nech je
táto akcia dostupná na adrese nasledujúceho
typu: /user/first/:n/, kde v parametri
bude počet užívateľov, ktorí sa majú
zobraziť na obrazovke.