# Параметры в роутах в 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/`, где параметрами будут некоторые числа. Сделайте так, чтобы на экран выводилась сумма переданных чисел.

← →
↑