如何修改URL管理器只接受数字而不是yii中的字母

时间:2014-01-10 12:38:47

标签: php yii yii-url-manager

我正在研究yii中的一个项目,在管理Url Manager时我遇到了一些问题。这是Yii默认的 Url manager 代码

'urlManager'=>array(
            'urlFormat'=>'path',
                        'showScriptName'=>false,
            'rules'=>array(
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),

现在问题在于将id作为参数的URL。假设我的网址是

localhost/project/admin/showMe/view/id/24
然后它会把我带到理想的地方。

但上述网址管理器的问题是,如果我将使用localhost/project/admin/showMe/view/id/24someAlphabets之类的网址 然后它也会带我到达所需的位置因为URL管理器找到了数字。

问题: -
那么我怎样才能更改URL管理器,这样只有在我传递数字而不是字母表时才能将我带到所需的位置?

1 个答案:

答案 0 :(得分:1)

\d+将匹配字符串中的任何数字,并将忽略任何其他字母。如果您只想匹配数字而不是其他内容,则必须使用字符串开头(^)和字符串结尾($)锚点:

'<controller:\w+>/<id:^\d+$>'=>'<controller>/view',