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