我们controller/action/id
可以/id
在 Yii 中以格式显示 url 吗?此外,一个主要问题是我只需要在特定的控制器/动作上执行此操作。
例如:如果我有,/user/post/ujjwal
那么我只需要显示/ujjwal
。当我拥有它时/image/display/ujjwal
,它可以保持原样吗?
我已阅读 Yii 中的 url 管理并了解其中显示的内容。但我不知道如何控制基于controller/action
.
任何帮助,将不胜感激。
谢谢, 乌杰瓦尔
在我看来,您不能将一个自定义 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
在你的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
),
),
),
您可以完成您想要的事情,但是会有一些副作用。如果你把它放在你的config/main.php
:
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'image/<action>/<username>' => 'image/action/username',
'<username>' => 'user/post/username',
),
),
首先放置所有更具体的规则,然后所有其他单个单元都将转到/user/post/something
.