我正在开发一项功能来编辑表格中的所有项目。
以下是我的控制器的编辑操作:
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行]
基本上我只想循环遍历表格中的每一行,并将内容更改为用户在表单中输入的内容。
答案 0 :(得分:3)
$this->set('localClocksEntries', $this->LocalClock->find('all'));
这为视图设置了一个变量 。它不会在当前范围中创建该变量。因此$localClocksEntries
中不存在变量foreach ($localClocksEntries ...
。如果要使用当前范围中的变量并将传递给视图,请执行以下操作:
$localClocksEntries = $this->LocalClock->find('all');
$this->set('localClocksEntries', $localClocksEntries);