CakePHP1.3.6:scaffold
scaffoldのtimestampの件、解決しました。フィールド名に規約があるのですね。createdとmodifiedをDATETIME型にしたらscaffoldの画面から消えて、裏ではちゃんと動作しました(CakePHP1.3.14, PHP5.3.4, MySQL5.1.54, CentOS5)。どうもありがとうございました。http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=369&forum=3
==============================================================================
CakePHPには、railsで脚光をあびたscaffoldの機能がある。
テーブルに対して、一発でCRUDアプリが作れることは、生産性だけでなく内部統制的にも非常にメリットがある。
ここで、管理職的に内部統制的と書いたのは、よく「お金(工数)がないから、マスタメンテは後回し」=>「結局、メンテ画面は作られずに、システム部門でSQLを使ってメンテナンス」ということが起こりがちだから。こういう本運用はマズイ。
scaffoldによって、暫定的なメンテナンス画面を、データの主管理部門に提供することができるようになる。
Scaffoldでの規約(convention)は以下。
- テーブル名は小文字英字(アンダースコア記法)で複数形にする。
- テーブル名をキャメル記法にしたものをプログラム名にする。
モデル、ビューを作成する必要はなく、以下のようなコントローラーを作成すればよい。
テーブルは前回と同じに、customersとする。したがって、上の規約によりプログラム名はCustomersとなる。
コントローラーの作成
/app/controllersにcustomers.phpを作成する。コードは以下だけ、
<?php class CustomersController extends AppController{ public $name = 'Customers'; public $scaffold; } ?>
確認
初期画面
これで、/localhost/cakesample/customersにアクセスする。
以下は、2レコードのデータが入っている状態だが、CRUDの初期画面(index画面)として、データの一覧表示とアクションを示唆するボタンが表示される。
また、上の一覧の見出しはテーブルのフィールド名であるが、これをクリックすることでデータの並べ替えができる。
画面下に表示されているのは、デバッグ用のSQL文。
データの登録
「New Customer」のボタンを押すと以下のように、新規データの登録画面となる。
プライマリーキーであるID(Auto Increment)は入力の対象にならない。画面上部にエラーが出るが、無視してしまっても問題ない(気持ち悪いので後で調べて手を入れたいけど)。タイプスタンプフィールドの初期値がおかしい(これは自分の環境の問題だろうと思う)。