我正在使用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',
),
),
1条答案
按热度按时间31moq8wy1#
您不需要转义ID中的连字符:
一个更简单的解决方案是:
此外,请注意,您必须将此特定规则置于一般(默认)规则之上。
将类别规则移动到
<controller>
规则之上。否则,您的应用会尝试在CategoryController中查找actionChildrenStuff()
。通常,我会在这三个一般规则之上添加新规则。