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

Параметры в роутах в MVC в PHP

В предыдущем уроке наши роуты имели фиксированные адреса. На самом деле механизм роутинга более сложный - можно сделать так, чтобы часть URI страницы попадала в именованные параметры, доступные затем в контроллере.

Пусть, к примеру, наши адреса будут выглядеть вот так: /test/параметр1/параметр2/, где параметр1 и параметр2 - произвольные строки. При этом мы хотим, чтобы адреса такого вида обрабатывались одним действием контроллера. Для этого следует придумать имя параметра и перед ним поставить двоеточие, вот так:

<?php use \Core\Route; return [ new Route('/test/:var1/:var2/', 'page', 'act'), ]; ?>

В нашем случае получится, что все запросы вида /test/параметр1/параметр2/ будут попадать на действие act. При этом в первый параметр этого действия будет попадать ассоциативный массив с параметрами: текст, который будет на месте первого параметра, попадает в элемент массива с ключом 'var1', а текст второго параметра - в 'var2'.

Пусть, к примеру, в адресной строке набрано следующее: /test/eee/bbb/. Давайте посмотрим, что будет содержать первый параметр действия:

<?php namespace Project\Controllers; use Core\Controller; class PageController extends Controller { public function act($params) { var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb'] } } ?>

Сделайте контроллер NumController, а в нем - действие sum. Пусть это действие обрабатывает адреса следующего вида: /nums/:n1/:n2/:n3/, где параметрами будут некоторые числа. Сделайте так, чтобы на экран выводилась сумма переданных чисел.