1

有谁知道如何根据字段值为用户分配不同的视图?

具体来说,我正在寻找一个函数,如果字段 xyz = 'user1',它将为用户提供用户名“user1”视图“templateA”。如果用户用户名不是字段 xyz 值,则会向用户显示视图“模板 B”。

你建议我走哪个方向?


解决了:

下面给出了控制器 actionUpdate 的工作示例,以防它对其他人有所帮助。

Yii::app()->user->id 指的是登录用户的id。$model->ownerId 是该模型中引用的表的 ownerId 字段。

替代视图文件“update1.php”和“update2.php”位于我的 protected/views/circle/swatch/ 文件夹中。

在我的“CircleController.php”中:

public function actionUpdate($id)
    {
        $model=$this->loadModel($id);

        if (Yii::app()->user->id == $model->ownerId) {
        $template = 'update1';
        } else {
        $template = 'update2';

         }
        if(isset($_POST['Circle'])) 
        {
            $model->attributes=$_POST['Circle'];
            if($model->save())
                $this->redirect(array('view','id'=>$model->id));
        }
         $this->render('swatch/' . $template,array(
            'model'=>$model,
        ));
    }
4

1 回答 1

3

我觉得你有两种可能:

  1. $this->render('/dynamic/' . $template);
  2. $this->render('/static/page', array('with-dynamic' => $variables));

编辑:

在你的情况下:

public function actionDisplayDynamicTemplate()
{
    if (Yii::app()->user->username == 'user1') {
        $template = 'templateA';
    } else {
        $template = 'templateB';
    }

    $this->render('user/' . $template);
}

user您所需要的只是在您的文件夹中命名的views目录,其中包含文件templateA.phptemplateB.php.

于 2013-08-06T16:36:37.200 回答