如何创建一个url规则,其命名参数类型为array?
现在我有了这个,工作:
'urlManager' => [
'rules' => [
'page/<id:\w+>' => 'cms/page/view',
],
],
映射&#39;页面/欢迎&#39;到module=cms
,controller=page
,action=view
,参数$id=welcome
现在我想拥有这样的网址,文件夹名称部分可变:
/page/folder1/folder2/.../folderN/pagefile
采取行动:
function actionPage(array $folders, string $id) {
// expecting:
// $folders == [ 'folder1', 'folder2', ..., 'folderN']
// $id == 'pagefile'
}
不知道如何编写规则。我无法找到规则语法的任何文档。
也欢迎变通办法!
答案 0 :(得分:1)
据我所知,传递给控制器动作的参数必须是string或int,因为控制器动作参数适用于简单的GET参数。
如果你真的想在GET请求中传递一系列文件夹,那么它应该在路线之后,例如:controller/action/id?folder[]=folder1name&folder[]=folder2name
所以$ id将在控制器动作的范围内,但你必须手动&#34;浏览$_GET['folder']
以获取查询字符串中可变数量的文件夹。