2013-08-06 52 views
1

有誰知道如何根據字段值爲用戶分配不同的視圖?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, 
     )); 
    } 

回答

3

我覺得你有兩種可能性:

  1. $這個 - >渲染( '/動態/' $模板); ('/ static/page',數組('with-dynamic'=> $ variables));}};

編輯:

你的情況:

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

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

所有你需要的是一個名爲您的views文件夾user,與文件templateA.phptemplateB.php目錄。

+0

我該如何實現這樣的事情?我知道這是控制器的一部分,但之後我需要更多的建議。感謝您的幫助順便說一句。 –

+0

非常感謝您的幫助!增加了我的解決方案,增加了stackoverflow的愛。 –