Yii url管理问题

时间:2014-06-10 04:58:31

标签: php regex yii url-rewriting

我正在使用Yii Framework开发一个Web应用程序,我在重写网址时遇到了一些问题。

问题在于下面代码中的最后一条规则。它应该将 localhost/app/category/some-friendly-url-category-name (此部分会显示在浏览器中)转换为 localhost/app/category/view/id/some-friendly-url-category-name

当类别名称只有一个单词时,它可以正常工作,例如: vehicles 。 但是当它多于一个词时它不起作用,例如: children-stuff

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

            'category/<id:[A-Za-z0-9_\-]+>' => 'category/view',
        ),
    ),

1 个答案:

答案 0 :(得分:2)

您无需转义ID中的连字符:

'category/<id:[A-Z a-z 0-9 _ -]+>' => 'category/view',

更简单的解决方案是:

'category/<id>' => 'category/view',

另外,请注意您必须将此特定规则置于常规(默认)规则之上。

将类别规则移到<controller>之上。否则,您的应用会尝试在您的CategoryController中找到actionChildrenStuff(),例如。

通常我会在这三个一般规则之上添加新规则。