ルーティングを用いて動的にViewを変える方法もあるかと思われましたので
記載させていただきます。
CakePHP 2.x前提です。
- 例えば
app/Config/routes.php
に次のようなルーティングを用意します。
php
1Router::connect('/controller/action/:ctp', array(
2 'controller' => 'controller',
3 'action' => 'action',
4), array(
5 'pass' => array(
6 'ctp',
7 ),
8));
参考: http://book.cakephp.org/2.0/ja/development/routing.html
- 例えば
app/Controller/ControllerController.php
では次のように ctp
パラメータを受け取ります。
ここでは例なので値のチェックを省きますが、受け取った ctp
を用いてViewを指定します。
(実際には$ctpが想定する値かチェックして不正なアクセスでないことの確認などをすると思われます)
php
1public function action($ctp) {
2 $this->render($ctp);
3}
参考: http://book.cakephp.org/2.0/ja/controllers.html#id7
php
1$this->redirect(array(
2 'controller' => 'controller',
3 'action' => 'action',
4 'ctp' => 'a',
5));
app/View/Controller/b.ctp
が表示されることかと思われます。
php
1$this->redirect(array(
2 'controller' => 'controller',
3 'action' => 'action',
4 'ctp' => 'b',
5));
もっと良い方法があるかもしれませんが、方法の一つとしてご参考までに。