Yii如何在模型中使用Id呈现用户页面,但在URL中使用用户名而不是ID

时间:2014-03-08 12:57:45

标签: php url yii url-rewriting

我有用户页面。 在索引视图中,它们都具有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),
    ));
}

1 个答案:

答案 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))); ?>