1

コントローラーにこれがあります:

class EmployeeAccountsController extends AppController
{
var $layout = 'login';

public function login()
{

}
public function main_board()
{

}

}

私がやりたいことは、login() のビューと main_board のビューを呼び出すときに、異なるレイアウトを割り当てることです。

login() には layout:login.ctp が必要です main_board() には layout:main_board() が必要です

単一のコントローラーが異なるレイアウトを持つことは可能ですか?

4

1 に答える 1

5

はい、次のようにコントローラーに beforeFilter をコールバックします。

class EmployeeAccountsController extends AppController {

  protected $layout = 'login';

  public function beforeFilter() {
      parent::beforeFilter(); //call parent before filter

      $this->layout = $this->layout;
  }
}

この場合、EmployeeAccounts コントローラーはすべてのビューのログイン レイアウトを持ちます。

編集:特にアクション用にレイアウトを定義するだけです

public function action() {   
 $this->layout = 'layout1';
}

public function action2() {   
 $this->layout = 'layout2';
}
于 2012-06-04T08:28:18.600 に答える