去年から今年に掛けて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テーブルを追加して、編集画面を作っていきたいと思います。

2件のコメント

  1. Cakephp3 管理画面を作る
    で探していたらこちらの記事に行きつきました、書いている内容もたいへん分かりやすいです、その2はいつ頃投稿される予定でしょうか~続きが大変気になりますし、知りたいところです。
    ご多忙の中とは思いますが、よろしくお願いいたします

    • ご覧いただきありがとうございます。
      既に実サイトをいくつか作っているので、整理がてら更新します。
      しばしお待ちを。

ホリ へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です