2013-01-06 5 views
0

Je suis l'implémentation d'un modèle pour un projet Yii. Le site Web a différent page de garde et modèle de page intérieure.modèle de page différent dans Yii

Je sais que je dois changer les fichiers de mise en page, mais comment puis-je avoir ces différents modèles pour les pages?

+0

Êtes-vous en ne changeant que le modèle principal (la mise en page du contenu de chaque page) ou êtes-vous aussi changer aucune des vues d'action de contrôleur individuelles? – frostyterrier

Répondre

6

Vous pouvez le faire dans le contrôleur. Par exemple, mon site est le même à l'exception de quelques pages. L'un d'eux est la page de connexion. Dans le SiteController j'ai déclaré le actionLogin comme ceci:

/** 
* Displays the login page 
*/ 
public function actionLogin() 
{ 
    $this->layout = '//layouts/simple'; 
    $model=new LoginForm; 

    // if it is ajax validation request 
    if(isset($_POST['ajax']) && $_POST['ajax']==='login-form') 
    { 
     echo CActiveForm::validate($model); 
     Yii::app()->end(); 
    } 
    // collect user input data 
    if(isset($_POST['LoginForm'])) 
    { 
     $model->attributes=$_POST['LoginForm']; 
     // validate user input and redirect to the previous page if valid 
     if($model->validate() && $model->login()) 
     //$this->redirect(Yii::app()->user->returnUrl); 
     $this->redirect(array('/')); 
    } 
    // display the login form 
    $this->render('login',array('model'=>$model)); 
} 

La ligne $ this-> layout = '// layouts/simples'; écrase la disposition par défaut (main) avec la mise en page simple. Si différents contrôleurs utilisent différentes mises en page, vous pouvez également en faire une commande large changement en déclarant la variable dans le contrôleur

public $layout='//layouts/column2'; 
+1

Mihai a raison. Alternativement, vous pouvez faire * layout = '// layouts/simple'; ?> * ** dans la vue ** si cela a plus de sens. –

Questions connexes