CakePHP の基本的なデータ構造

CakePHP には、 MVC 間のデータ交換や、モデルを取り出したり保存したりする際に用いられる基本的なデータの形式があります。配列で表現するこのデータ形式は次のようなイメージになります。

<?php
$data = array("モデル名" => array("フィールド名" => "",
                                 "フィールド名" => "",
                                 …),
              "モデル名" => array("フィールド名" => "",
                                 "フィールド名" => "",
                                 …),
              …);
?>

前述の通り、この形式のデータは CakePHP の随所で見つけることができます。便宜上、当サイトではこれを CakePHP 式データと呼びます。

モデル内での使われ方

データベースからデータを取得する際に Model::find() メソッドや Model::read() メソッドを用いますが、それらのメソッドが返す値は CakePHP 配列です。返値にモデル名も含まれている点に注意してください。

また、モデルのデータをテーブルに追加・更新する際に Model::save() というメソッドを用いますが、このメソッドは引数として CakePHP 配列でデータを渡す必要があります。ここでもモデル名も含んで渡すという点に注意してください。

最後ですが、モデルにはコールバック関数があります。たとえば Model::beforeSave() は Model::save() の前に呼ばれるコールバック関数です。データベースへ保存される前にデータを修正したい場合などにこのメソッドをオーバーライドしますが、その際に対象となるデータは $Model::data というメンバ配列変数に CakePHP 配列として入っています。やはりそこでもモデル名を含んでいる点に注意してください。

コントローラ内での使われ方

CakePHP では POST 送信によって渡されたパラメータが自動的に $Controller::data メンバ配列変数へ格納されます。この形式が CakePHP 配列になっています。

ただし、自動的に格納されるのは HTML ヘルパーを使って出力した form 関連要素(inputタグなど)のみです。とはいえ CakePHP ではほとんどの場合 form 関連要素を HTML ヘルパーで出力しますので、事実上、全ての POST データが $Controller::data に自動的に格納されると考えて差し支えありません。

ビュー( HTML )内での使われ方

ビュー( HTML )で form 関連要素( input タグなど)を書く場合、 CakePHP では HTML ヘルパーを利用します。その理由のひとつがコントローラとのデータ交換です。 HTML ヘルパーで書かれた form の要素を POST 送信すると、送信先のコントローラの $Controller::data というメンバ配列変数に自動的に格納されます。

また、 HTML ヘルパーは form 関連要素を書く際に、コントローラ内の $Controller::data メンバ配列変数を参照して、これから出力しようとしている要素と同じ名前のデータがあった場合、そのデータを初期値として HTML を出力します。この仕様によって、たとえばデータ登録画面で入力項目にエラーがあった場合でも、今までに入力していたデータが消失してしまうのを防げるようになっています。

« 「CakePHP におけるシンボルの命名規約」へ  |  トップへ  |  上の階層へ  |  「CakePHP のライブラリ」へ »

トップページへ戻る / 前のページへ戻る

back to top