【问题标题】:yii2 url rule with named parameter of type arrayyii2 url 规则,带有数组类型的命名参数
【发布时间】:2017-05-12 08:48:43
【问题描述】:

如何使用数组类型的命名参数创建 url 规则?

现在我有了这个,正在工作:

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

将“页面/欢迎”映射到module=cmscontroller=pageaction=view、参数$id=welcome

现在我想要这样的 url,带有可变数量的文件夹名称部分: /page/folder1/folder2/.../folderN/pagefile

对于一个动作:

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

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

也欢迎解决方法!

【问题讨论】:

  • 您能否尝试重新表述问题,或者将其拆分并专注于您想要解决的第一个案例?
  • @dataskills:更新了 Q. 1. 需要帮助编写规则。 2.如果按规矩办不到,有没有别的办法?

标签: php yii2 url-routing


【解决方案1】:

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

如果你真的想在 GET 请求中传递一个文件夹数组,它应该在路由之后,例如:controller/action/id?folder[]=folder1name&amp;folder[]=folder2name

因此 $id 将在控制器操作的范围内,但您必须“手动”通过 $_GET['folder'] 来获取查询字符串中可变数量的文件夹。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2014-01-05
相关资源
最近更新 更多