テーブル内のすべてのアイテムを編集する機能に取り組んでいます。
これが私のコントローラーからの編集アクションです:
public function editAll()
{
$this->set('isEditAllValid', false);
$this->set('editAllValidationErrors', false);
if ($this->request->is('post'))
{
$this->LocalClock->table = 'local_clocks';
$this->LocalClock->getDataSource()->tableFields['local_clocks'] = array( "id", "name", "auto_offset", "utc_offset_sec", "in_month", "in_week", "in_day", "in_hour", "out_month", "out_week", "out_day", "out_hour", "offset_sec");
$this->set('localClocksEntries', $this->LocalClock->find('all'));
if ($this->LocalClock->save($this->request->data))
{
foreach($localClocksEntries as $LocalClock)
{
$this->set('LocalClock', $this->request->data);
$this->LocalClock->save($LocalClock);
$this->set('isEditAllValid', true);
$this->set('editAllValidationErrors', false);
}
}
else
{
$this->set('isEditAllValid', false);
$this->set('editAllValidationErrors', true);
}
}
}
私がコードで行っているのは、いくつかのブール変数をfalse(検証関連)に設定し、アクションがポストである場合は、ローカルクロックテーブルを取得し、それを変数に挿入して保存することです。次に、その変数をループして、テーブルの各アイテムに投稿されたデータを保存します。
理由はわかりませんが、すべてを編集しようとすると2つのエラーが発生します。
注意(8):未定義の変数:localClocksEntries [APP / Controller / LocalClocksController.php、158行目]
警告(2):foreach()に無効な引数が指定されました[APP / Controller / LocalClocksController.php、158行目]
基本的には、テーブルのすべての行をループして、ユーザーがフォームに入力した内容に変更したいだけです。