Yii - 根据字段值显示特定视图

时间:2013-08-06 16:26:02

标签: php yii

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

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

您建议我选择哪个方向?


解决:

下面给出了控制器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,
        ));
    }

1 个答案:

答案 0 :(得分:3)

我认为你有两种可能性:

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

    在你的情况下:

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

    您需要的只是user文件夹中名为views的目录,其中包含templateA.phptemplateB.php个文件。