gouteさんの回答の通りですが、少し補足的に書いておきます。
アクション側で、$this->render()ではなく、$this->viewBuilder()->template();でテンプレートを指定すれば、beforeRender()側でも$this->viewBuilder()->template();で設定を見れます。
php
1// action側
2$this->viewBuilder()->template("AAA");
3
4// beforeRender側
5if($this->viewBuilder()->template() === 'AAA') {
6 $this->viewBuilder()->template("AAA_2");
7}
また、アクション側で、$this->render()でtemplateを指定したいなら、Controllerクラスのrender()をオーバーライドするしかないと思います。ただし、Controllerクラスのrenderをコピーするのではなく、引数を調整して、親クラスのrenderを実行するようなコードを書くといいと思います。
php
1// action側
2$this->render("AAA");
3
4// render側
5public function render($view = null, $layout = null) {
6 if($view == 'AAA') {
7 $view = 'AAA_2';
8 }
9 return parent::render($view, $layout);
10}
※こうすると、将来Cakephpのバージョンを上げるときに、Controllerクラスのrenderが変更されてもメンテが必要なくなります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/14 09:14 編集