我正在使用“yii-user”(模块/用户),现在用户网址为mysite.com/user/user/view/id/1
,我想要更改为mysite.com/profile/username
用户控制器是:
public function actionView()
{
$model = $this->loadModel();
$this->render('view',array(
'model'=>$model,
));
}
public function loadModel()
{
if($this->_model===null)
{
if(isset($_GET['id']))
$this->_model=User::model()->findbyPk($_GET['id']);
if($this->_model===null)
throw new CHttpException(404,'The requested page does not exist.');
}
return $this->_model;
}
/**
* Returns the data model based on the primary key given in the GET variable.
* If the data model is not found, an HTTP exception will be raised.
* @param integer the primary key value. Defaults to null, meaning using the 'id' GET variable
*/
public function loadUser($id=null)
{
if($this->_model===null)
{
if($id!==null || isset($_GET['id']))
$this->_model=User::model()->findbyPk($id!==null ? $id : $_GET['id']);
if($this->_model===null)
throw new CHttpException(404,'The requested page does not exist.');
}
return $this->_model;
}
我尝试添加此网址规则'profile/<username>' => 'user/user/view',
,但它仍无效,因为模型需要在网址中显示ID。
请问好吗?
答案 0 :(得分:0)
您只需修改操作以处理用户名,例如:
public function actionView($id=null, $username=null)
{
if (isset($id))
$model = User::model()->findByPk($id);
else if isset($username))
$model = User::model()->findByAttributes(array('username'=>$username));
if ($model===null)
throw new CHttpException(404,'The requested page does not exist.');
$this->render('view',array(
'model'=>$model,
));
}
并确保: