去年から今年に掛けてCakePHP3を使ってWebシステムをいくつか作っております。
Webシステムと言えば管理画面が必要になりますね。そこで主に自分のためにCakePHP3を使った実装手順を整理してみることにしました。
なお、文中、フロント側とは一般のサイト利用者が使う側、管理側はサイトの管理者が使う側を指しています。
CakePHPはフロント側と管理画面で同じものを使う
以前、CakePHP1.3を使って同様に独自CMSなWebシステムを構築したときには、フロント側と管理側、それぞれ用にCakePHPを用意して使いました。
ルーティングがうまく使いこなかったこと(調べたり試したりする時間も無かった)、フロント側と管理側で体制が分かれていたのが理由でした。今回は、それではあんまりにも格好悪いので1つのCakePHP3でフロント側、管理側で共有しようと思います。
プレフィックスルーティングで管理側をフロント側から分離する
1.3で使いこなせなかったプレフィクスルーティングを3.0のCookBookで見てみます。なんだか以前よりスッキリしている気がします。config/routes.phpに以下を追加すると/adminでアクセス出来るようになって、src/Controllers/Admin 以下のコントローラが呼び出されるらしい。そしてテンプレートはsrc/Template/Admin/に用意すればいいと書いてあります。
Router::prefix('admin', function ($routes) {
$routes->fallbacks('DashedRoute');
});
この記述だけを追記した状態で /admin/Admin/ にアクセスしようとすると、Missing Controllerのエラーが表示されます。(Adminテーブルを管理するイメージ)
Controller/Adminの下にAdminController.php を作ってAdminControllerクラスを定義せよとのことです。
bakeでさくっとコントローラを作成します。(Windows環境なので \ がディレクトリを指しています。)
※アプリケーションのディレクトリで実行
bin\cake bake controller --prefix admin admin
気をつけるのは –prefix admin を付けること。これでController/Admin以下にファイルが作られます。この状態でアクセスすると、エラーの内容がadminテーブルが無いに変わりました。
そりゃ当たり前だ。まだ作ってないんだから。
今回はここまで。次回は管理者の管理用のadminテーブルを追加して、編集画面を作っていきたいと思います。