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

时间:2015-01-10 15:58:14

标签: php regex yii yii2

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

'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有什么问题吗?

可以这样做吗?

1 个答案:

答案 0 :(得分:7)

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

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