6

我需要一个http://example.com/post/view/id/1 url 的规则,它将像这样显示http://example.com/post/post_title。我想显示帖子名称或标题,而不是 ID 号。

我的配置如下所示:

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

3 回答 3

3

你需要有一个看起来像这样的规则

'post/<post_title:\w+>'=>'postController/view/title/<post_title>',

这只是告诉应用程序将以 post/post_title 开头的请求转发到 post 控制器的 actionView,其中 $_GET['title'] 设置为 post_title...

希望有帮助。

于 2012-05-13T20:50:10.940 回答
3

这是简单的规则

'post/<post_title:\w+>' => 'post/view'

如果需要这样的网址http://example.com/post/some-title-with-hyphen

'post/<post_title:[-\w]+>' => 'post/view'

你需要一个带有 $post_title 参数的控制器动作

public function actionView($post_title) {
    ...
于 2014-12-27T01:15:04.370 回答
1

默认情况下,Yii 只获取帖子 ID,如果要显示帖子标题,则需要在自定义 Url 类规则中访问自己的数据库。yii 教程中有一个名为using-custom-url-rule-classes的示例

于 2011-12-03T10:09:45.747 回答