送信ボタンの連打を防ぎ、結果が返ってくるまで「送信中です」と画面に表示したかったので。Ajaxで送信したデータを、CakePHPのモデルを使ってテーブルに格納するところまで出来た。使い、調べたところを昨日の記事にまとめたところで力尽きた。6日目(今日)ログイン画面で入力するデータのバリデーション機能を追加した。CakePHPのマニュアルを見ながらやったが、現在日本語マニュアルは大事なページが見られないので、英語版も読んだ。設定チェック画面が表示されるが、別のページを表示させるにはどうすればいいんだろう」と思い立って調べた。調べればすぐにわかるので大したことでは無いのだが、せっかくだから後でブログにまとめるか。これが昨日今日でやったこと。脱線するから物づくりが進まない。ついて、自分用のメモも兼ねて基礎の基礎をまとめた。他のバージョンでは検証してません。いう機能を使用することにより、テーブルのデータを表示、編集、削除ができる画面が生成される。詳細については、CakePHPマニュアルを参照。マニュアルには「アプリケーションのスキャフォールディングは、開発者がオブジェクトを生成・取り出し・更新・削除することができる基本的なアプリケーションを定義し作成するという技術です。」と書かれており、テーブルのデータ編集以外にも色々なことができそうだが、マニュアルにはほとんど記述が無い。いう名前のファイルを作成し、以下のソースコードを記述すればよい。$scaffold;}モデルのファイルを作成する必要は無い。アクセスすれば上の画像のような画面が表示される。ファイルが作成されている場合は、別名のコントローラーを作成する。この名前のファイルを作成し、以下のソースコードを記述すればよい。$scaffold;}コントローラー名とモデル名が異なるので、uses属性にモデル名を記述する。この場合もモデルのファイルを作成する必要は無い。アクセスすれば以下のような画面が表示される(画像からはヘッダやフッタを省いた)。規約では、モデル名の複数形がテーブル名になる。使用したい場合は、モデルでテーブル名を指定する。いう名前のファイルを作成し、以下のソースコードを記述すればよい。"Test";}useTable属性にテーブル名を記述する。より以下のような画面が生成される(画像からはヘッダやフッタを省いた)。testテーブルの画面のため、上記testsテーブルとはフィールド名が異なっている。testsという名前のテーブルがある場合は、別名のモデルを作成する。コントローラー名も重ならないように別名にするべき。すると、コントローラーのソースコードは以下のようになる。$scaffold;}モデルのソースコードは以下のようになる。より以下のような画面が生成される(画像からはヘッダやフッタを省いた)。紛らわしいテーブル名はバグの元なので、単数形と複数形のテーブル名の混在はできるだけ避けた方がよい。該当テーブルに対して、既存のコントローラーがある場合」で、それ以外はついでに調べた。2日も間があいてしまった。今日は久しぶりにAjaxのコーディングをした。JavaScriptは、CakePHPのAjaxヘルパーを使わずにjQueryでコーディングした。ヘルパーを使うのは、PHPで動的にJavaScriptを組むときに考えよう。読み込む必要があるので、あまり使う気にならない。これが結構便利なので、後でちゃんとブログに書きたい。CakePHP側でxmlでレスポンスを返すコーディングに手間取った。xml用のレイアウトとビューを作れば良いのだが、CakePHPの機能をちょっと調べた。シリアライズが便利そうだ。リクエストハンドラコンポーネントでレスポンスヘッダを設定できるようだが、うまくいかなかったのでコントローラーのheaderメソッドで設定した。Ajaxでブラウザからデータを受け取って、xmlをブラウザに返すところまではできた。次は受け取ったデータをデータベースに格納する機能のコーディングかな。データのバリデーションやサニタイズは後回し。