
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