Templates Yii中的不同页面模板

Templates Yii中的不同页面模板,templates,yii,Templates,Yii,我正在为一个Yii项目实现一个模板。网站有不同的frontpage和内页模板 我知道我必须更改布局文件,但如何才能为页面使用这些不同的模板?您可以在控制器中执行此操作。例如,我的网站除了几个页面外看起来都一样。其中之一是登录页面。在SiteController中,我声明了actionLogin,如下所示: /** * Displays the login page */ public function actionLogin() { $this->layout = '//lay

我正在为一个Yii项目实现一个模板。网站有不同的frontpage和内页模板


我知道我必须更改布局文件,但如何才能为页面使用这些不同的模板?

您可以在控制器中执行此操作。例如,我的网站除了几个页面外看起来都一样。其中之一是登录页面。在SiteController中,我声明了actionLogin,如下所示:

/**
 * 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));
}
行$this->layout='//layouts/simple';用简单布局覆盖默认主布局。如果不同的控制器使用不同的布局,您也可以通过在控制器中声明变量来进行控制器范围的更改

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

您可以在控制器中执行此操作。例如,我的网站除了几个页面外看起来都一样。其中之一是登录页面。在SiteController中,我声明了actionLogin,如下所示:

/**
 * 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));
}
行$this->layout='//layouts/simple';用简单布局覆盖默认主布局。如果不同的控制器使用不同的布局,您也可以通过在控制器中声明变量来进行控制器范围的更改

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

您是否仅更改主模板每个页面上的内容布局,还是同时更改任何单个控制器操作视图?您是否仅更改主模板每个页面上的内容布局,还是同时更改任何单个控制器操作视图?Mihai是正确的。或者,如果这更有意义的话,你可以在视图中这样做。Mihai是对的。或者,如果这更有意义,您可以在视图中执行。