offline version v3
Запись на курсы по HTML, CSS, JavaScript, PHP, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗ppOpUFmRPA 153 of 179 menu

Применение параметров в роутах в 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'=>'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/, где в параметре будет количество юзеров, которые следует вывести на экран.