0

テーブル内のすべてのアイテムを編集する機能に取り組んでいます。

これが私のコントローラーからの編集アクションです:

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行目]

基本的には、テーブルのすべての行をループして、ユーザーがフォームに入力した内容に変更したいだけです。

4

1 に答える 1

3
$this->set('localClocksEntries', $this->LocalClock->find('all'));

これにより、ビューの変数が設定されます。現在のスコープにその変数は作成されません。したがって、変数$localClocksEntriesはに存在しませんforeach ($localClocksEntries ...。現在のスコープで変数を使用てビューに渡す場合は、次のようにします。

$localClocksEntries = $this->LocalClock->find('all');
$this->set('localClocksEntries', $localClocksEntries);
于 2012-06-25T15:03:56.077 に答える