具有类型为array

时间:2017-05-12 08:48:43

标签: php yii2 url-routing

如何创建一个url规则,其命名参数类型为array?

现在我有了这个,工作:

    'urlManager' => [
        'rules' => [
            'page/<id:\w+>' => 'cms/page/view',
        ],
    ],

映射&#39;页面/欢迎&#39;到module=cmscontroller=pageaction=view,参数$id=welcome

现在我想拥有这样的网址,文件夹名称部分可变: /page/folder1/folder2/.../folderN/pagefile

采取行动:

function actionPage(array $folders, string $id) {
    // expecting:
    //   $folders == [ 'folder1', 'folder2', ..., 'folderN']
    //   $id      == 'pagefile'
}

不知道如何编写规则。我无法找到规则语法的任何文档。

也欢迎变通办法!

1 个答案:

答案 0 :(得分:1)

据我所知,传递给控制器​​动作的参数必须是string或int,因为控制器动作参数适用于简单的GET参数。

如果你真的想在GET请求中传递一系列文件夹,那么它应该在路线之后,例如:controller/action/id?folder[]=folder1name&folder[]=folder2name

所以$ id将在控制器动作的范围内,但你必须手动&#34;浏览$_GET['folder']以获取查询字符串中可变数量的文件夹。