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 回答