在 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',
    ],
],

上面的工作正常,因为 ?.

即使是最后的可选 /

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

'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 变量传递。

...或者我的 RegEx 有问题?

这可以做到吗?

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

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