在 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',
我正在尝试使用 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',