0
我使用「警予用戶」(模塊/用戶),用戶現在的網址是mysite.com/user/user/view/id/1
,我想改變爲mysite.com/profile/username
用戶名而不是URL ID - 警予用戶
用戶控制器:
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;
}
我嘗試添加此url規則'profile/<username>' => 'user/user/view',
但它仍然無法工作,因爲模型需要url中的id。
有什麼想法嗎?
您可以在URL管理器 –
中編寫規則我寫這樣 - 'profile/'=>'user/user/view',並且不工作,因爲模型需要url中的id,我期待對於這個解決方案,thanx –
如果你只想在url中使用用戶名,你必須將'findByPk($ id)'改成'findByAttributes(array('username'=> $ username))'' – feco