CakePHPでは一つのコントローラの中に通常のアクションと管理者用アクションとを定義できます。例えばコントローラ名がpostの場合、URLは以下のようになります。
・通常 http://www.example.com/post ・管理者用 http://www.example.com/admin/post
この機能を使う手順は以下になります。
1.CAKE_ADMINを有効にする
app/config/core.phpのCAKE_ADMIN定義を有効にします。(デフォルトはコメントアウトされている)
/** * Uncomment the define below to use cake built in admin routes. * You can set this value to anything you want. * All methods related to the admin route should be prefixed with the * name you set CAKE_ADMIN to. * For example: admin_index, admin_edit */ define('CAKE_ADMIN', 'admin'); // 有効にする
この’admin’という値を見て、勘の良い人ならばお気づきだと思います。実はURLやアクション名のadminはこの値を参照しています。もしadminから他のワードに変更すればURL、管理者アクション名・ビューファイル名を変更できます。(ex. maintenanceなら、URLが/maintenance/posts、アクション・ビューファイル名がmaintenance_indexになります。)
2.管理者アクションをコントローラに記述する
管理者アクションをコントローラに記述します。アクション名は[admin_ + %アクション名%]になります。
[app/post_controller.php]
class PostController extends AppController { function index() { // 通常のアクション } function admin_index() { // 管理者用アクション } }
3.管理者アクションビューを設置する
2.で記述した管理者アクションに関連づけられるビューファイルを設置します。ビューファイル名はアクションと同じく[admin_ + %アクション名%.thtml]となります。
[app/views/post/admin_index.thtml]
<h2>管理者用アクション</h2>
以上で管理者アクションが動作するようになります。
>>
管理者用画面はたいてい通常画面とは異なるレイアウトになるので、レイアウトも管理者用画面に変更します。
4.管理者用レイアウトを設置する
管理者用レイアウトファイルを作成し、app/views/layoutsにadmin.thtmlのファイル名で設置します。
5.管理者用レイアウトを呼び出す
レイアウトはcontrollerの$layoutで設定されているで、管理者用レイアウトを表示するにはこの値を変更します。管理者用アクション内で設定しても良いのですが、各コントローラのアクション毎に記述するのは非効率です。そこで親クラスのAppControllerに記述しておきます。以下のようにbeforeRender内に書いておけば、アクション内には特別な記述は不要です。(なおbeforeRenderは画面生成前に呼ばれます)
[app/app_controller.php]
class AppController extends Controller { function beforeRender() { if(defined('CAKE_ADMIN') && !empty($this->params['admin'])){ $this->layout = 'admin'; } } }
これで通常のアクセスではdefault.thtmlが、管理者用アクセスではadmin.thtmlがレイアウトになります。
管理者サイトを/admin/以下にまとめておけば、あとはhttpd(Apache等)側でBasic認証をかけるなり、IPアドレスでのアクセス制御など対応が取りやすくなるので便利ですね。(これは中々面白い機能だと思います。)
※追記(2006/09/06)
Apache側でのBasic認証やIP制限をかける際はLocationMatchディレクティブでadminがURLのどの位置に来てもマッチするようにしておくか、修正パッチを適用する必要があります。詳しくはCakePHP URLマッピング修正パッチをご覧下さい。
- Newer: CakePHP 携帯用ビューを表示する
- Older: CakePHPでZendFrameworkを使う
トラックバック:4
- このエントリーのトラックバックURL
- /blog/2006/09/cakephp_admin.html/trackback
- Listed below are links to weblogs that reference
- CakePHP 管理者用アクション from Shin x blog
- pingback from links for 2008-06-20 « test 08-06-20 (金) 12:32
-
[…] CakePHP 管理者用アクション | Shin x blog cakephpで管理画面の作り方。app/config/route.phpってのがあるんや。 (tags: cakephp admin) […]
- pingback from Think Twice - ログイン画面を作る 08-07-11 (金) 16:11
-
[…] CakePHP 管理者用アクション | Shin x blog http://www.1×1.jp/blog/2006/09/cakephp_admin.html […]
- pingback from [cakephp]1.2で管理者用アクションの設定をする | blog.hereticsintheworld 08-10-29 (水) 2:10
-
[…] cakephp1.2で管理者用のページを作る。1.2での通称「adminルーティング」に関する情報です。 1.1に関しては、こちらが大変参考になります。 CakePHP 管理者用アクション - Shin x blog 1.2の場合は下記が違ってきます。 […]
- pingback from ACLでのアクセス管理[cakephp] | Enjoy!日曜プログラミング 13-03-10 (日) 10:57
-
[…] CakePHP 管理者用アクション […]