Primer parametara u rutama u MVC u PHP
Pogledajmo primenu opisanog na
realističnijem primeru. Neka naš kontroler
PageController sadrži niz stranica
(ove podatke bi trebao da vraća model, ali sa
modelima još nismo detaljno prošli, pa neka
podaci za sada budu samo u kontroleru):
<?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',
];
}
}
?>
Napravimo akciju show, koja
će prikazati stranicu sa određenim
brojem (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()
{
// ovde ćemo prikazati stranicu po određenom broju
}
}
?>
Neka pristup adresi /page/1/
prikazuje tekst prve stranice, pristup
adresi /page/2/ -
tekst druge stranice, itd. Napravimo
odgovarajuću rutu:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Implementirajmo opisani 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'] ]; // prikazujemo stranicu po broju
}
}
?>
Implementirajte kontroler UserController,
koji sadrži sledeći niz:
<?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],
];
?>
U kontroleru UserController, napravite
akciju show, koja će prikazivati
korisnika po određenom id. Neka bude
dostupna na adresi sledećeg oblika:
/user/:id/.
U kontroleru UserController, napravite
akciju info, koja će prikazivati
ime ili godine određenog korisnika. Neka ova
akcija bude dostupna na adresi sledećeg
oblika: /user/:id/:key/, gde će key
imati vrednost 'name', 'age'
ili 'salary'.
U kontroleru UserController, napravite
akciju all, koja će prikazivati
listu svih korisnika na ekranu. Neka ova akcija
bude dostupna na adresi sledećeg oblika:
/user/all/ (ovde neće biti parametara).
U kontroleru UserController, napravite
akciju first, koja će prikazivati
listu prvih N korisnika na ekranu. Neka ova
akcija bude dostupna na adresi sledećeg oblika:
/user/first/:n/, gde će u parametru
biti broj korisnika koje treba
prikazati na ekranu.