В Yii2 для настройки UrlManager, чтобы иметь одинаковое название параметра для разных роутов, нужно использовать функцию addRules()
класса UrlManager для задания правил маршрутизации.
Правила маршрутизации описываются в файле конфигурации приложения, обычно в файле config/web.php
. В этом файле вы найдете массив 'components'
, в котором должен быть задан компонент UrlManager.
Вот пример, как можно настроить UrlManager с одинаковым названием параметра для разных роутов:
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ // Правила маршрутизации [ 'pattern' => 'page/<id:d+>', 'route' => 'site/page', ], [ 'pattern' => 'post/<id:d+>', 'route' => 'site/post', ], // ... добавьте здесь другие правила на основе параметра <id> ], ],
В приведенном примере мы настраиваем два правила маршрутизации: page/<id:d+>
и post/<id:d+>
. Оба правила имеют одинаковое имя параметра <id>
, но разные значения <id>
в URL будут маршрутизироваться по разным контроллерам и действиям.
В случае, когда пользователь запрашивает URL вида page/123
, Yii2 будет выбирать контроллер site
и действие page
, а <id> будет передано в качестве аргумента методу actionPage()
в контроллере site
.
Аналогично, при запросе URL вида post/456
, Yii2 будет выбирать контроллер site
и действие post
, а <id> будет передано в качестве аргумента методу actionPost()
в контроллере site
.
Вы можете создавать сколько угодно правил маршрутизации и использовать одинаковое название параметра для разных роутов.