使用表单助手为多个记录

时间:2012-04-09 20:19:22

标签: cakephp-1.3 formhelper multiple-records

我有一张名为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=>...)
)
*/

现在我不确定如何继续。 我知道如何构建一个表单来准备创建新的多个记录(Model。{n} .fieldname),但是如何创建一个允许saveAll()的“编辑”表单?

尝试迭代结果数组得到表单关闭..但我看不到输入元素中字段的值..

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

在控制器中:

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例子不是吗? :)