CakePHPのbakeコマンドでディレクトリにコントローラー・ビューを生成

スポンサーリンク

CakePHP3 での開発で、コントローラーやビュー(テンプレート)を特定のディレクトリ以下に生成する方法です。具体的には、src/Admin/UsersController.php のように、Admin ディレクトリ以下にコントローラーやビュー用のファイルを生成するための、bin/cake bake コマンドの使い方となります。

— 環境 —
PHP 5.5.19
CakePHP 3.1.1

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

prefix オプション付きの bin/cake bake コマンドを使う

bin/cake bake controller コマンドで — prefix オプションを使う。管理画面用のコントローラーとして、src/Admin/UsersController.php を生成する例とします。

これで以下の2ファイルが生成される。

src/Controller/Admin/UsersController.php
tests/TestCase/Controller/Admin/UsersControllerTest.php

コントローラーには、以下のコードが生成され namespace が正しく設定されています。

src/Controller/Admin/UsersController.php

template を bake で生成

続いてビュー(テンプレート)も bin/cake bake コマンドで生成します。こちらも –prefix オプションに Admin を指定する。

これで以下のテンプレートファイルが生成される。

src/Template/Admin/Users/index.ctp
src/Template/Admin/Users/view.ctp
src/Template/Admin/Users/add.ctp
src/Template/Admin/Users/edit.ctp

prefix 付きのルーティング

prefix 付きコントローラー用のルーティングを作成する。

config/routes.php

とりあえず $routes->fallbacks() でルーティング作成。

login() アクションとテンプレート作成

$routes->fallbacks(‘DashedRoute’) とした場合、Auth コンポーネントを使用している User のコントローラーには、login アクションが必要になります。なので、Admin/UsersController.php に以下の login() アクションを追加しました。

src/Controller/Admin/UsersController.php

また login() アクション用のテンプレート作成。

src/Template/Admin/Users/edit.ctp

これで /admin/users の管理画面ページが動作するようになる。

管理画面アクションの認可を isAuthorized() で実装

最後に補足ですが、管理画面アクションの authorization(認可)については、Admin/UsersController.php に isAuthorized() を実装するなど別途設定が必要です。以下は User モデルに role カラムを持たせて、role が admin(管理者)の場合のみ認可する例。

src/Controller/Admin/UsersController.php

以上です。

スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
 
スポンサーリンク

Leave Your Message!