2

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

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

我已阅读 Yii 中的 url 管理并了解其中显示的内容。但我不知道如何控制基于controller/action.

任何帮助,将不胜感激。

谢谢, 乌杰瓦尔

4

3 回答 3

2

在我看来,您不能将一个自定义 URL 映射到两个或多个 URL 路径或操作。就像当有人访问时/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

于 2012-06-06T09:47:30.017 回答
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 
                         ),
            ),
        ),
于 2012-06-06T06:59:41.057 回答
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.

于 2012-06-06T15:43:58.170 回答