Любой уровень вложенности в роутинге, как реализовать в Yii2?

Имеется такой роутинг.

    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            '' => 'site/index',
            'catalog/' => 'catalog/index',
            'catalog/<sub1:[\w\-]+>/<sub2:[\w\-]+>/<sub3:[\w\-]+>/<slug:[\w_-]+>' => 'catalog/category',
            'catalog/<sub1:[\w\-]+>/<sub2:[\w\-]+>/<slug:[\w_-]+>' => 'catalog/category',
            'catalog/<sub1:[\w\-]+>/<slug:[\w_-]+>' => 'catalog/category',
            'catalog/<slug:[\w_-]+>' => 'catalog/category',
            '<_a:[\w\-]+>' => 'site/<_a>',
            '<_a:[\w\-]+>/<id:\d+>' => '<_c>/view',
        ],
    ],

И такой адрес страницы с вложенными подкатегориями.

site.ru/catalog/kategoria-1/kategoria-5/kategoria-6/kategoria-7

Но что если вложенность может быть любой, 10, 20 и т.д. уровней?

Как это реализовать?


Ответы (1 шт):

Автор решения: cy4oHok

В конфигурационном файле прописываете

web.php

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            'catalog/<category:(.*)' => 'catalog/index',
        ],
    ],

CatalogController.php

public function actionIndex( $category = null ) {
    if ( !is_null( $category ) && trim( $category ) != '' ) {
        //Далее сами "руками" разбираете полученный URL
        //либо через explode, либо регуляркой
        $subCategories = explode('/', $category);
    }
}
→ Ссылка