我有用户页面。 在索引视图中,它们都具有ID上的超链接,因此它们将ID发送到模型。 当你按下链接时,用户视图被加载,网址变为
/site/users/1
但我想要的是URL不是用户ID,而是用户名像
/site/users/Alex
我该怎么办? 这是我的_view
<?php echo CHtml::link(CHtml::encode($data->id), array('view', 'id'=>$data->id)); ?>
控制器
public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id),
));
}
答案 0 :(得分:1)
您需要修改以下文件: -
main.php(配置)
"urlManager" => array(
"rules" => array(
"/site/users/<name:[\w\_]>" => "/site/users/view",
//All the other rules here...
)
)
控制器
public function actionView($name){
$mdoel = User::model()->findByAttributes(array(
"username" => $name
));
if($model){
$this->render("view", array(
"model" => $model
));
}
}
无论您在何处放置链接,请按以下方式建立链接: -
<?php echo CHtml::link(CHtml::encode($data->id), array("view", "name" => $data->username)); ?>
更新: -
尝试使用以下语法: -
<?php echo Chtml::link(CHtml::encode($data->id), $this->createUrl('view', array('name'=>$model->username))); ?>