как я могу создать правило url с именованным параметром массива типов?
теперь у меня это, работая:
'urlManager' => [ 'rules' => [ 'page/<id:\w+>' => 'cms/page/view', ], ],
to map 'page / welcome' to module=cms
, controller=page
, action=view
, param $id=welcome
теперь я хотел бы иметь такой URL-адрес, с переменным числом имен папок: /page/folder1/folder2/.../folderN/pagefile
для действия:
function actionPage(array $folders, string $id) { // expecting: // $folders == [ 'folder1', 'folder2', ..., 'folderN'] // $id == 'pagefile' }
не знаю, как написать правило. Я не мог найти документацию для синтаксиса правил.
обходные пути тоже приветствуются!
Насколько я знаю, аргументы, переданные в действие контроллера, должны быть строковыми или int, потому что параметры действия контроллера работают с простыми параметрами GET.
Если вы действительно хотите передать массив папок в запросе GET, это должно быть после маршрута, например: controller/action/id?folder[]=folder1name&folder[]=folder2name
Таким образом, $ id будет в области действия контроллера, но вам придется «вручную» перейти через $_GET['folder']
чтобы получить переменное количество папок, которые находятся в строке запроса.