-1

我想在 cake php 中存储多个输入行。但我遇到了一个错误。这是我的代码:

控制器::动作:

if ($this->request->is('post')) {
    $this->OrderPlan->create();

    if ($this->OrderPlan->saveAll($this->request->data, 
            array('validation'=>false),
            array('atomic'=>true))) {

        $this->Session->setFlash(__('The order plan has been saved.'));
        return $this->redirect(array('action' => 'index'));
    } else {
        $this->Session->setFlash(__('The enquiry could not be saved. Please, try again.'));
    }
}

编辑页面:

 <?php
    $catageries = array("yarn", "knitting", "dyeing", " Compacting ");
    foreach ($catageries as $value):
?>   
        <td></td>
        <td><?php echo "$value";?></td>
        <td><?php echo $this->Form->input('work_begin_date', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'work-begin-date', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('work_end_date', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'work-end-date', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('lead_time_from_po', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'lead-time-form-po', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('po_to_be_issued_on_date', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'po-to-be-issued-on-date', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('planned_po_qty', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'planned-po-qty', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('planned_unit_rate', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'planned-unit-rate', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('po_date', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'po-date', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('po_number', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'po-number', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('party_name', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'party-name', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('actual_po_qty', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'actual-po-qty', 'wrapInput' => false)); ?></td>
        <td><?php echo $this->Form->input('actual_unit_rate', array('type' => 'text', 'class' => 'span6 datepicker', 'label' => false, 'tabindex' => '1', 'id' => 'actual_unit_rate', 'wrapInput' => false)); ?></td>
        <td>&nbsp;</td>
    </tr>

<?php endforeach; ?>
    </table>
    <?php echo $this->Form->submit(__('Save All'),array('multiple'=>'true'), array('class' => 'btn btn-info')); ?>

这仅在最后一行存储一条记录。另外三行没有保存。

4

2 回答 2

1

如果您正在使用Model::saveMany(),您的数据需要像这样格式化

Model =>
  0 =>
    field1 => var1
    field2 => var2
  1 =>
    field1 => var3
    field2 => var4

为此,您的表单字段需要索引,如下所示

$this->Form->input('Model.0.field1')
$this->Form->input('Model.0.field2')
$this->Form->input('Model.1.field1')
$this->Form->input('Model.1.field2')

编辑:示例代码
,您可以使用类似这样的方式调整您的原始代码

$i = 0;
foreach($categories as $category){
    echo $this->Form->input('Model.' .$i. '.field1');
    echo $this->Form->input('Model.' .$i. '.field2');
    $i++;
}
于 2013-10-26T17:44:58.710 回答
-1

如果要保存多行,则必须取消设置最后保存的项目的 ID。使用
$this->Model->save(); 然后使用

 unset($this->Model->id); 
于 2013-10-26T10:20:09.677 回答