Yii网址管理问题

mlnl4t2r  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(77)

我正在使用Yii Framework开发一个Web应用程序,我在URL重写方面遇到了一个小问题。
问题出在下面代码中的最后一个规则上。它应该将**localhost/app/category/some-friendly-url-category-name(这部分将出现在浏览器中)转换为localhost/app/category/view/id/some-friendly-url-category-name**
当类别名称为只有一个单词时,它可以正常工作,例如:但是当它有超过一个单词的时候就不起作用了,比如:* 儿童用品 *

'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',
        ),
    ),
31moq8wy

31moq8wy1#

您不需要转义ID中的连字符:

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

一个更简单的解决方案是:

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

此外,请注意,您必须将此特定规则置于一般(默认)规则之上。
将类别规则移动到<controller>规则之上。否则,您的应用会尝试在CategoryController中查找actionChildrenStuff()
通常,我会在这三个一般规则之上添加新规则。

相关问题