在 Yii 2 的 UrlManager 规则集中使用 RegEx


Using RegEx within Yii 2's UrlManager rulesets

我正在尝试使用Yii 2's UrlManager来设置规则,我知道您可以在要传递的参数中使用正则表达式,例如:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'enableStrictParsing' => false,
    'rules' => [
        'foo/<id:'d+>/?' => 'foo/view',
    ],
],

以上工作正常,即使是可选的/,因为?.

但是,我

想知道如果我想在规则中的其他地方使用正则表达式怎么办,但是我不需要它作为参数传递......如。

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'enableStrictParsing' => false,
    'rules' => [
        'foo/([0-9a-zA-Z'-]+)'.<id:'d+>/?' => 'foo/view',
    ],
],

以上是行不通的。基本上我想支持URL,例如:

foo/some-name-123-end.99/
foo/some-name-123-end.99

然后99(可以是任何数字)将作为id变量传递。

。还是我的正则表达式有问题?

这能做到吗?

根据文档,您只能为参数指定正则表达式。例:

'foo/<tmpParam:[0-9a-zA-Z'-]+>.<id:'d+>/?' => 'foo/view',