如何指定操作的默认模型

时间:2011-09-25 05:55:24

标签: php yii

如果没有指定,我想让一个动作的模型成为当前用户。怎么做?

例如,我在用户控制器中有一个配置文件操作。如果网址类似于/ user / profile / 3,它将显示id为3的用户的个人资料,如果网址为/ user / profile,则会显示当前用户的。

public function actionProfile($id){
                   $model=$this->loadModel($id);
                   $this->render('profile',array(
                        'model'=>$model
                ));
        }

2 个答案:

答案 0 :(得分:0)

如果我理解这个问题,那你就是在谈论default scopes

在模型中:

public function defaultScope ()
{
    if (Yii::app ()->user->id)
    {
        return array (
            'condition' => 'user_id=' . Yii::app ()->user->id,
        );
    }
    else
    {
        // or whatever
        return array ();
    }
}

然后,控制器中的任何查询都将使用该条件作为条件。

答案 1 :(得分:0)

这样的事情怎么样:

public function actionProfile($id=null)
{
    $id=($id===null?Yii::app()->user->id:$id);
    $model=$this->loadModel($id);
    ...
}