Admin pages / Admin Routing

CakePHP 在 bake controller 的時候, console 會詢問你會否使用 admin methods

而所謂的admin methods 其實是指同一個controller 之內的: admin_index(), admin_view(), admin_add(), admin_edit(), admin_delete() 五個method
神奇的 router 便會將這些 method route 到: http://{WEBROOT}/admin/{controller}/{index}, 而不是 http://{WEBROOT}/{controller}/{admin_index}
那你便可以做一些管理人員專用的method, 以方便區分管理人員的功能和一般使用者的功能
但留意, 在這個預設設定之下, cakephp 沒有內建存取權限的代碼, 簡單點說, admin_index() 還是可以被一般使用者存取
所以, 你可能會用 app_contoller.php 內的 beforeFilter():
//check admin routing
if ( substr($this->action,0,5)=='admin' ) {
  if ($this->Auth->user('role')!="admin") {
    $this->redirect("/");
  }else{
    $this->layout = "admin";
  }
}
那你的 user table 便需要一個 role 的欄位(varchar) 放 ‘admin’ 等等
但到最後, 我發覺使用admin methods 本身有很多限制
例如admin methods 和一般methods 是使用同一個model, 同一個validation, 同一個model hooks
所以, 後來還是使用了另一個方法做 admin site.

但admin method 介紹了 routing 的功能, 等一下再詳談 routing.