1

Yiiプロジェクトのテンプレートを実装しています。Webサイトには、異なるフロントページと内部ページのテンプレートがあります。

レイアウトファイルを変更する必要があることはわかっていますが、ページ用にこれらの異なるテンプレートを作成するにはどうすればよいですか?

4

1 に答える 1

7

あなたはコントローラーでそれを行うことができます。たとえば、私のWebサイトは、いくつかのページを除いて同じように見えます。それらの1つはログインページです。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';
于 2013-01-06T23:59:47.027 に答える