Примена параметара у рутама у MVC у PHP
Хајде да погледамо примену описаног на
реалнијем примеру. Нека наш контролер
PageController садржи низ страница
(ове податке би требао да враћа модел, али са
моделима још нисмо завршили, па нека
подаци за сада само буду ускладиштени у контролеру):
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'страница 1',
2 => 'страница 2',
3 => 'страница 3',
];
}
}
?>
Хајде да направимо акцију show, која
ће приказивати на екран страницу са одређеним
бројем (id):
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'страница 1',
2 => 'страница 2',
3 => 'страница 3',
];
}
public function show()
{
// овде ћемо приказати страницу по броју
}
}
?>
Нека при приступу адреси /page/1/
буде приказан текст прве странице, при
приступу адреси /page/2/ -
текст друге странице и тако даље. Направимо
одговарајући рут:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Имплементирајмо описану методу show:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'страница 1',
2 => 'страница 2',
3 => 'страница 3',
];
}
public function show($params)
{
echo $this->pages[ $params['id'] ]; // приказујемо страницу по броју
}
}
?>
Имплементирајте контролер UserController,
који садржи следећи низ:
<?php
$this->users = [
1 => ['name'=>'корисник1', 'age'=>'23', 'salary' => 1000],
2 => ['name'=>'корисник2', 'age'=>'24', 'salary' => 2000],
3 => ['name'=>'корисник3', 'age'=>'25', 'salary' => 3000],
4 => ['name'=>'корисник4', 'age'=>'26', 'salary' => 4000],
5 => ['name'=>'корисник5', 'age'=>'27', 'salary' => 5000],
];
?>
У контролеру UserController, направите
акцију show, која ће приказивати
корисника по одређеном id. Нека она
буде доступна на адреси следећег вида:
/user/:id/.
У контролеру UserController, направите
акцију info, која ће приказивати
име или године одређеног корисника. Нека ова
акција буде доступна на адреси следећег
вида: /user/:id/:key/, где key
ће имати вредност 'name', 'age'
или 'salary'.
У контролеру UserController, направите
акцију all, која ће приказивати
листу свих корисника на екран. Нека ова акција
буде доступна на адреси следећег вида:
/user/all/ (овде нема параметара).
У контролеру UserController, направите
акцију first, која ће приказивати
листу првих N корисника на екран. Нека ова
акција буде доступна на адреси следећег вида: /user/first/:n/, где у параметру
ће бити број корисника које треба
приказати на екрану.