Прымяненне параметраў у роўтах у MVC у PHP
Давайце паглядзім прымяненне апісанага на
больш жыццёвым прыкладзе. Хай наш кантролер
PageController утрымлівае масіў старонак
(гэтыя даныя павінна аддаваць мадэль, але з
мадэлямі мы яшчэ не разбяраліся, таму хай
даныя пакуль проста захоўваюцца ў кантролеры):
<?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',
];
}
}
?>
Давайце зробім дзеянне show, якое
будзе выводзіць на экран старонку з пэўным
нумарам (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()
{
// тут выведзем старонку з пэўным нумарам
}
}
?>
Хай пры звароце да адрасу /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 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show($params)
{
echo $this->pages[ $params['id'] ]; // выводзім старонку па нумары
}
}
?>
Рэалізуйце кантролер UserController,
які змяшчае наступны масіў:
<?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],
];
?>
У кантролеры UserController, зрабіце
дзеянне show, якое будзе выводзіць
карыстальніка па пэўным id. Хай яно
будзе даступна па адрасу наступнага выгляду:
/user/:id/.
У кантролеры UserController, зрабіце
дзеянне info, якое будзе выводзіць
імя або ўзрост зададзенага карыстальніка. Хай гэта
дзеянне будзе даступна па адрасу наступнага
выгляду: /user/:id/:key/, дзе key
будзе мець значэнне 'name', 'age'
ці 'salary'.
У кантролеры UserController, зрабіце
дзеянне all, якое будзе выводзіць
спіс усіх карыстальнікаў на экран. Хай гэта дзеянне
будзе даступна па адрасу наступнага выгляду:
/user/all/ (параметраў тут ніякіх
не будзе).
У кантролеры UserController, зрабіце
дзеянне first, якое будзе выводзіць
спіс N першых карыстальнікаў на экран. Хай гэта
дзеянне будзе даступна па адрасу наступнага
выгляду: /user/first/:n/, дзе ў параметры
будзе колькасць карыстальнікаў, якія варта
вывесці на экран.