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)は入力の対象にならない。画面上部にエラーが出るが、無視してしまっても問題ない(気持ち悪いので後で調べて手を入れたいけど)。タイプスタンプフィールドの初期値がおかしい(これは自分の環境の問題だろうと思う)。

データの参照

「View」ボタンを押すと、データを参照する画面となる。

データの更新

「Edit」ボタンを押すと、データを更新する画面となる。データを修正して、「Submit」ボタンを押すと、データが更新されて、一覧画面にリダイレクトされる。

データの削除

「Delete」ボタンを押すと、以下のように確認のダイアログが出る。ここでOKをするとデータが削除されて、一覧画面にリダイレクトされる。