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

Bre*_*ett 1 php regex yii yii2

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

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'enableStrictParsing' => false,
    'rules' => [
        'foo/<id:\d+>/?' => 'foo/view',
    ],
],
Run Code Online (Sandbox Code Playgroud)

以上工作正常,甚至可选/的最终因为?.

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

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

以上不起作用.基本上我想支持URL,例如:

foo/some-name-123-end.99/
foo/some-name-123-end.99
Run Code Online (Sandbox Code Playgroud)

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

......或者我的RegEx有什么问题吗?

可以这样做吗?

Val*_*sky 8

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

'foo/<tmpParam:[0-9a-zA-Z\-]+>.<id:\d+>/?' => 'foo/view',
Run Code Online (Sandbox Code Playgroud)