AXS3でCakePHPを使うための備忘録3
前回まででDBの設計はしたものの、コードの部分は手つかずでした。Ruby on Railsな方はScaffoldするんでしょうが、CakePHPのScaffoldはあまり性能がよくないようです。もっとも、現在開発中の1.2.x系列では改善されるようですが…
しかし、CakePHPにはbake.phpというコードを自動で生成してくれるスクリプトがありますので、こちらを使用したいと思います。
詳細を説明する前に、簡単なMVCの扱いについて。
Bookというモデルを作成し、一覧参照、詳細参照、作成、編集、削除という標準的な機能を実装したい場合、以下のようなファイルを作成します。
モデル: app/models/
book.php
コントローラ: app/controllers
books_controller.php
ビュー: app/views/books
index.thtml、view.thtml、edit.thtml、add.thtml
モデルでデータ型の定義、コントローラでモデルに紐付いたアクションの定義、ビューでアクションに対応した画面表示の定義という具合です。なおビューに削除がないのは、レンダリングする必要がないからです。
それではさっそくターミナルを起動して、コマンドラインから bake.php を実行します。(警告を煩わしいと感じる方は、/etc/php.d/oci8.ini と /etc/php.d/ を「;」でコメントアウトしておくと警告が出なくなります。)
ソースコードの生成先を指定します。自動で認識してくれるので、ここでは「y」を選びます。
$ php /var/www/html/bookshelf/cake/scripts/bake.php
(略)
Bake -app in /var/www/html/bookshelf/app (y/n)
[y] > y
まずはモデルから作成します。
[M]odel
[C]ontroller
[V]iew
What would you like to Bake? (M/V/C)
> M
スクリプトはデータベースを参照し、モデル名を自動で割り出します。ここでは、Bookを選択。
Possible Models based on your current database:
1. Book
Enter a number from the list above, or typein the name of another model.
> 1
モデルで入力検証をする機能がありますが、ここでは有効にしません。
Would you like to supply validation criteria for the fields in your model? (y/n)
[y] > y
モデルのアソシエーションを行うかを聞かれます。ここでは、モデルが一個しかないのでNoです。
Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n)
[y] > n
モデルを生成します。
Look okay? (y/n)
[y] > y
Cake test suite が入っていないので、テストは入れません。
Cake test suite not installed. Do you want to bake unit test files anyway? (y/n)
[y] > n
次はコントローラをBakeします。先ほどMでモデルを選んだ部分でCを選びます。
$ php /var/www/html/bookshelf/cake/scripts/bake.php
(略)
Bake -app in /var/www/html/bookshelf/app (y/n)
[y] > y
[M]odel
[C]ontroller
[V]iew
What would you like to Bake? (M/V/C)
> C
Possible Models based on your current database:
1. Book
Enter a number from the list above, or typein the name of another model.
> 1
インタラクティブにコントローラを生成するか聞かれます。ここでnを選ぶと全て自動で作成されます。ここではnを選びます。
Would you like bake to build your controller interactively>
Warning: Choosing no will overwrite controller if it exist. (y/n)
[y] > n
基本的なアクションメソッドを定義するかを聞かれますので、yと答えます。
Would you like to include some basic class methods (index(), add(), view(), edit())> (y/n)
[y] > y
管理者専用のルーチンを実装するか聞かれます。ここでは、とくにユーザ認証を求めているわけでもないので、必要ありません。
Would you like to create the methods for admin rounting? (y/n)
[y] > n
モデルの時と同じく、Cake test suite が入っていないので、テストは入れません。
Cake test suite not installed. Do you want to bake unit test files anyway? (y/n)
[y] > n
最後にビューをBakeします。先ほどCと選んだ部分でVを選びます。
$ php /var/www/html/bookshelf/cake/scripts/bake.php
(略)
Bake -app in /var/www/html/bookshelf/app (y/n)
[y] > y
[M]odel
[C]ontroller
[V]iew
What would you like to Bake? (M/V/C)
> V
Possible Models based on your current database:
1. Book
Enter a number from the list above, or typein the name of another model.
> 1
インタラクティブにビューを生成するか聞かれます。ここでnを選ぶと全て自動で作成されます。ここではnを選びます。
Would you like bake to build your views interactively>
Warning: Choosing no will overwrite views if it exist. (y/n)
[y] > n
管理者専用のルーチンを実装するか聞かれます。ここでは、とくにユーザ認証を求めているわけでもないので、必要ありません。
Would you like to create the methods for admin rounting? (y/n)
[y] > n
これで、自動生成は完了です。ブラウザで「http://localhost/books」にアクセスすると以下の画面が表示され、本の追加や修正、削除、一覧参照ができるようになります。

ところが。
システムの調整だけやればコードが自動生成されるから楽、と思ったら日本語が通りませんでした。次はテンプレートのいじる方を軽く。




コメント