2011-09-25 32 views
-1

如果未指定,我想让动作的模型成为当前用户的模型。怎么做?如何指定动作的默认模型

例如,我在用户控制器中有配置文件操作。如果url是/ user/profile/3,它将显示用户的个人资料,其ID为3,如果URL是/ user/profile,它将显示当前用户的个人资料。

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

,如果$ id为空,设置'$ ID =的Yii ::应用程序() - >用户> id'?你是这个意思吗?目前还不完全清楚你在找什么。 – ldg

+0

@ldg $ id是这个函数的参数,如果你没有指定它是一个致命错误。 – LotusH

回答

0

怎么是这样的:

public function actionProfile($id=null) 
{ 
    $id=($id===null?Yii::app()->user->id:$id); 
    $model=$this->loadModel($id); 
    ... 
} 
在功能
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(); 
    } 
} 

然后在您的控制器的任何查询将使用它作为一个条件。