管理者ページを作成したいときに役立つのがプレフィックスルーティング。
たとえば admin 以下を管理者ページとして、通常ページとレイアウトを切り替えたりできる。
1. プレフィックスルーティングを有効にする
デフォルトでは無効になっている。以下の行のコメントを外して有効にする。
// app/Config/core.php Configure::write('Routing.prefixes', array('admin'));
2. コントローラにadminのプレフィックスをつけたメソッドを作成する
// app/Controllers/ProductsController.php class ProductsController extends AppController { public function admin_index() { // do something } }
このメソッドは /admin/products/index のURLで呼び出される。
3. ビューファイルを作成する
メソッド名と同じ名前でビューファイルを作成する。app/Views/Products/admin_index.ctp
4. アクセスに応じてレイアウトを切り替える
まずはadmin用のレイアウトを作る。app/View/Layouts/admin.ctp
アクセスに応じてレイアウトを切り替えるには、adminのプレフィックスが付いたメソッドでレイアウトを指定する。
$this->layout = 'admin';
これは手軽だけど、全てのadminメソッドで指定しないといけないので手間。
基底クラスに以下のように書いておくと簡単で確実。
// app/Controllers/AppController.php class AppController extends Controller { public function beforeFilter() { if (isset($this->request->params['admin']) && ($this->request->params['prefix'] == 'admin')) { $this->layout = 'admin'; } } }
参考サイト
Routing — CakePHP Cookbook 2.x documentation
http://book.cakephp.org/2.0/en/development/routing.html#prefix-routing