bake.phpスクリプトを活用しよう!
DBがある場合、大抵は、アイテムの作成、読み出し、編集、削除の機能が必要になります。このCRUD(Create、Read、Update、Delete)機能画面を自動的に作成するのが、「cake/scripts/bake.php」です。Windows環境であれば、コマンドプロンプトを起動して(Linuxの場合はコンソール/ターミナルから)、次のように実行しましょう(筆者は、エクスプローラの任意のフォルダ上で右クリックするだけでコマンドプロンプトが出るようにしています)。
c:\> (phpのパス)\php.exe (cakeのパス)\scripts\bake.php
モデル、コントローラ、ビューをそれぞれ指定すると、あっという間にコードが生成されます。
しかし、当方のWindows上のテストでは、1.1.10.3825の場合、コマンドプロンプトのカレントディレクトリを「cake をインストールした一番上の階層」にして実行した場合にのみ、bakeに成功しています。一例として、PHPが「c:\php5」、Apacheが「c:\apache\apache2\」にある場合は、次のようにすると動作しています。
- 「c:\apache\apache2\htdocs\cake>c:\php5\php.exe cake\scripts\bake.php -project testapp」でプロジェクトフォルダを生成
- 「c:\apache\apache2\htdocs\cake>c:\php5\php.exe cake\scripts\bake.php -app testapp」で各クラスを生成
ステップ1:クラスの選択画面
モデル(M)、ビュー(V)、コントローラ(C)のどれを生成するかを選択します。ここでは、まずモデルを選択することにします。コントローラの生成はステップ5を、ビューの生成はステップ6以降を参照してください。
ステップ2:モデルの選択
モデルを選択すると、現在接続しているDBのテーブルから生成できるモデルの一覧が表示されます。
ステップ3:モデル生成確認
バリデーション(値の検証)や、テーブルアソシエーション(テーブル同士の親子関係)などを設定したい場合はここで選択します。後から自分で書き足すことも可能です。確認画面が出たら「y」を選択します。
ステップ4:モデル生成確認
すべての情報の入力を終えると、Unitテスト用のファイルも生成するかを聞いてきます。今回は「n」を選択しました。
ステップ5:コントローラ生成
続いてコントローラを生成します。「plural」は、「複数形で記入してください」という意味です。interactively(対話)で作る必要がない場合には、「n」を選択することでCRUD機能を一括生成できます。
ステップ6:ビューの生成(1)
最後にビューを生成します。ビューの画面でも、クラス名は「samples」と複数形で入力してください。
ステップ7:ビューの生成(2)
自動的に、index、view、add、editの画面が生成されます。実体は単なるhtmlファイルなので、楽に日本語化できますし、デザイナーに渡すこともできます。
ステップ8:完成した画面
該当URLを開くと、生成された画面が見えます。MVCが分離した分かりやすいコードが書き込まれていますので、これを自分のニーズに合わせて修正・加工していきましょう。
ステップ9:デザインの変更
生成されたファイルは、デザイン部分が分かれているので、デザインの変更も別作業で進めることができます。全体の枠組みとなるテンプレートは、「/view/layout」ディレクトリに置くことができます。
一例として、「/view/layout」ディレクトリにファイルを追加しただけで、下記のように外観が変化しました。
参考テンプレート
筆者のはじめたdecorateプロジェクト
筆者のはじめたdecorateプロジェクトを使用すると、「bake.php」とまったく同じ手順で、
- ページネーション
- 複合ソート
- フィルタリング(検索)
などの機能を追加したページを生成できます。いずれ、グラフなどのレポート関係のページも自動生成できるように改良したいと考えています。
「scaffolding」という方法もあります。クラスに
scaffold
という変数を準備するだけでCakeがCRUDの面倒をすべてみてくれる、というものです。- cakesheet.pdf
- cakephp.orgのサイトにあるマニュアル
- sitepointの簡単なチュートリアル(英語)
まとめ
CakePHPを使うと、短期間で効率的にサイトを構築できますし、チームで働く場合にも活用できます。英語コミュニティには既に数千人が登録していますので、大抵の問題は解決方法が見つかります。筆者が所属する株式会社コミュニケーションビジネスアヴェニューでは、日本語コミュニティサイトを作成して、日本でもユーザーが増えるようサポートしていきたいと思います。生じる問題や新技術の取り込み方などについてもアイデアがきっと見つかります。ぜひCakePHPフレームワークを使ってWeb開発に挑戦してみませんか。
参考文献
- http://www.cakephp.org ……CakePHPのプロジェクトサイトです。
- cakephp マニュアル ……英語ですが分かりやすくまとまっています。
- cakephp 日本語コミュニティ ……CakePHPに関する最新情報を日本語で確認できます。
- decorateプロジェクト ……bake.phpを拡張するプロジェクトです。
- cakephpのおいしい食べ方 ……CakePHPに関する個人ブログです。