CakePHP 2.xのプレフィックスルーティングを有効にし、レイアウトを変える方法

CakePHPで、管理者用のページを作成するために、プレフィックスルーティングを有効にしました。そして、そのプレフィックスがついたアクションで、レイアウトが変わるようにしました。

今回はその方法を紹介します。

プレフィックスルーティングを有効にする

/app/Config/core.phpの、124行目付近のコメントから、//を消します。

Configure::write('Routing.prefixes', array('admin'));

これでプレフィックスルーティングが有効になりました。

プレフィックスルーティングの使い方

今回はRouting.prefixesの値にadminを設定しているので、コントローラ内で、プレフィックスとしてadmin_をメソッドの前につけます。

class UsersController extends AppController {
  public function admin_add() {
    // 処理
  }
}

上記コードは、/admin/users/addというURLでアクセスできます。

ビューファイルはapp/views/users/admin_add.ctpとなります。

レイアウトを切り替える

app/View/Layoutsにadmin.ctpを作ります。

このレイアウトを使うアクションが少なければ、個々のアクションに、$this->layout = 'admin';と書いてもよいですが、今回はapp/Controller/AppController.phpに下記コードを書きます。

function beforeFilter() {
  if (isset($this->params['prefix']) && $this->params['prefix'] == 'admin') {
    $this->layout = 'admin';
  }
}

これで、admin_がついているアクションが呼び出された場合のレイアウトは、admin.ctpとなります。


参考サイト Routing — CakePHP Cookbook v2.x documentation
参考サイト php – Change admin layout in CakePHP – Stack Overflow