Примена на параметри во рутови во 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/, каде во параметарот
ќе биде бројот на корисници кои треба да се
прикажат на екранот.