我有一个名为specs
的表。我需要在一个表单中编辑其中的多行并一次保存。
// table structure
specs [id, name, value, owner_id]
// controller part
$data = $this->Spec->find('all'); // skipping the conditions and other sub-code
$data = set::combine(...);
/*
result, keyed using the spec[id] column.
array (
[3] = array(id=>...),
[22] = array(id=>...)
)
*/
现在我不知道如何继续。我知道如何构建一个准备好创建新的多条记录的表单(模型。n}.fieldname),但是我如何创建一个允许saveAll()
的"编辑"表单?
尝试遍历结果数组会使表单关闭..但是我看不到输入元素中字段的值。
你可以试试这个:
在控制器中:
public function edit() {
$products = $this->Product->find('all');
if (!empty($this->data)) {
if ($this->Product->saveAll($this->data['Product'])) {
$this->Session->setFlash('ok');
} else {
$this->Session->setFlash('not ok');
}
} else {
$this->data['Product'] = Set::extract($products, '{n}.Product');
}
$this->set(compact('products'));
}
在视图中:
echo $this->Session->flash();
echo $this->Form->create('Product');
foreach ($products as $i => $product) {
echo $this->Form->input("$i.id");
echo $this->Form->input("$i.name");
}
echo $this->Form->end('Save');
PS:我想你可以根据你的需求调整我的Product
例子,不是吗?