Yiiプロジェクトのテンプレートを実装しています。Webサイトには、異なるフロントページと内部ページのテンプレートがあります。
レイアウトファイルを変更する必要があることはわかっていますが、ページ用にこれらの異なるテンプレートを作成するにはどうすればよいですか?
あなたはコントローラーでそれを行うことができます。たとえば、私の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';