控制Yii中的url:controller / action / id为/ id

时间:2012-06-06 06:04:39

标签: url yii

我们可以在Yii中以controller/action/id/id的格式显示网址吗?另外,一个主要问题是我只需要在特定的控制器/动作上执行此操作。

For Instance:如果我有/user/post/ujjwal,那么我只需要显示/ujjwal。当我有/image/display/ujjwal时,它可以是原样吗?

我已经阅读了Yii中的网址管理,并了解其中显示的内容。但我不知道如何根据controller/action来控制网址。

任何帮助都将不胜感激。

谢谢, Ujjwal

3 个答案:

答案 0 :(得分:2)

在我看来,您无法将一个自定义网址映射到两个或多个网址路径或操作。与有人访问/my_username时相同,我们会将其重定向到/user/post/ujjwal/image/display/ujjwal。由于这种模式/规则,应用程序将会混淆。

因此,我建议您将/image/display/ujjwal更改为其他模式/规则。与/my_username/image

一样

我使用username作为所选用户名的查询字符串。

'components'=>array(

            .....

            'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<username:[\w.]+>'=>'user/post',
                '<username:[\w.]+>/display'=>'image/display',
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),

            ....

之前有人问过这个类似的问题:How to specify a SEO friendly url like twitter www.twitter.com/<name> using YII framework

答案 1 :(得分:1)

config/main.php尝试

'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName'=>false,
                        'rules'=>array(
                          'user/post/<user:\w+>'=>'<user>', //this should be the very first rule
                           //other rules 
                         ),
            ),
        ),

答案 2 :(得分:0)

你可以做些什么,但有一些副作用。如果你把它放在config/main.php

        'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'rules'=>array(
            'image/<action>/<username>' => 'image/action/username',
            '<username>' => 'user/post/username',
            ),
        ),

首先列出所有更具体的规则,然后其他所有内容都将转到/user/post/something