Uporaba parametrov v rutah v MVC v PHP
Poglejmo si uporabo opisanega na
bolj življenjskem primeru. Naj naš krmilnik
PageController vsebuje seznam strani
(podatke bi morał vrniti model, vendar s
modeli še nismo obravnavali, zato naj
podatki za zdaj le shranjeni v krmilniku):
<?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',
];
}
}
?>
Naredimo dejanje show, ki
bo izpisalo na zaslon stran z določeno
številko (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()
{
// tukaj bomo prikazali stran z določeno številko
}
}
?>
Naj bo ob dostopu do naslova /page/1/
prikazano besedilo prve strani, ob
dostopu do naslova /page/2/ -
besedilo druge strani in tako naprej. Naredimo
ustrezno pot:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Implementirajmo opisano metodo 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'] ]; // izpišemo stran po številki
}
}
?>
Implementirajte krmilnik UserController,
ki vsebuje naslednji seznam:
<?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 krmilniku UserController naredite
dejanje show, ki bo prikazalo
uporabnika po določenem id. Naj bo
dostopno na naslednji naslov:
/user/:id/.
V krmilniku UserController naredite
dejanje info, ki bo prikazalo
ime ali starost določenega uporabnika. Naj bo to
dejanje dostopno na naslednji naslov:
/user/:id/:key/, kjer bo key
imel vrednost 'name', 'age'
ali 'salary'.
V krmilniku UserController naredite
dejanje all, ki bo prikazalo
seznam vseh uporabnikov na zaslon. Naj bo to dejanje
dostopno na naslednji naslov:
/user/all/ (tukaj ne bo nobenih
parametrov).
V krmilniku UserController naredite
dejanje first, ki bo prikazalo
seznam prvih N uporabnikov na zaslon. Naj bo to
dejanje dostopno na naslednji naslov:
/user/first/:n/, kjer bo v parametru
število uporabnikov, ki jih je treba
prikazati na zaslonu.