我想转换格式为的 URL
path/to/my/app/Controller_action/id/2
到
path/to/my/app/Controller_action/id/User_corresponding_to_id_2
我已经从 Yii 看过这个教程,但它对我没有任何帮助。谁能帮我这个?
编辑:我还想知道这件事在 POST 场景中是否可能,即我只会在 URL 中有 path/to/my/app/Controller_action 。
我想转换格式为的 URL
path/to/my/app/Controller_action/id/2
到
path/to/my/app/Controller_action/id/User_corresponding_to_id_2
我已经从 Yii 看过这个教程,但它对我没有任何帮助。谁能帮我这个?
编辑:我还想知道这件事在 POST 场景中是否可能,即我只会在 URL 中有 path/to/my/app/Controller_action 。
在你的用户模型中添加一个 getUrl 方法
public function getUrl()
{
return Yii::app()->createUrl('controller/action', array(
'id'=>$this->id,
'username'=>$this->username,
));
}
在中添加以下规则urlManager
组件config/main.php
'controller/action/<username:.*?>/<id: \d+>'=>'controller/action'
并在任何地方使用模型url
虚拟属性
dInGd0nG 是在正确的轨道上,但如果我理解正确,您希望根据实际用户名而不是 ID 执行操作,对吗?
在 Yii 中这并不难。为简单起见,我在这里假设控制器是用户,操作是视图。
您的用户控制器:
public function actionView($id)
{
if (is_numeric($id))
$oUser = User::model()->findByPk($id);
else
// Luckily Yii does parameter binding, wouldn't be such a good idea otherwise :)
$oUser = User::model()->findByAttributes(array('username' => $id));
...
}
您的 urlManager 配置:
'user/view/<id: \w+>' => 'user/view',
或更一般地说:
'user/<action: \w+>/<id: \w+> => 'user/<action>',
在视图中生成用户 url:
$this->createUrl('user/view', array('id' => $oUser->username));