[CakePHP] Formでテーブル形式のデータを一括保存する方法

CakePHPで表形式で変更したデータをまとめてDBに保存する方法です。

アプリケーションを開発していると、1つ1つのレコードを保存するだけではなく、表形式のデータをまとめて保存したいことも多いですよね。

そんなときに使える技です。

データベースの準備

prefecturesというテーブルを作り都道府県データを登録します。

データ表示ページ

Controller

View

ここはFormの作り方がポイントになります。

$prefectures
をforeachで回します。

echo $this->form->hidden(“Prefecture.{$t}.id” ,array(‘value’ => $V[‘Prefecture’][‘id’] ));
という記述でhiddenを設定します。Prefecture.{$t}.idのtの部分は都道府県idが入ります。
HTMLは以下のように生成されます。


echo $this->Form->input(“Prefecture.{$t}.name”, array(
‘label’ => false,
‘value’ => $V[‘Prefecture’][‘name’]
)
);

インプット部分はこのように記載します。Prefecture.{$t}.nameの$tの部分は都道府県idが入ります。
valueには都道府県名が表示されるようにします。
HTMLは以下のように生成されます。

テーブル形式のインプット画面

CakePHP テーブル一括変更

Sendボタンを押した時に送られるデータ

Controller

都道府県のid付きでデータが取得できるので、これをsaveすれば完了です。



Author: webmaster