2013-10-26 12 views
-1

Я хочу сохранить несколько строк ввода в 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')); ?> 

Это хранит только один запись в последней строке. Остальные три строки не сохраняются.

+0

Можете ли вы предоставить полный код edit.ctp файла? –

ответ

-1

Если вы сохраняете несколько строк, вам необходимо отключить идентификатор последнего сохраненного элемента. Используйте
$this->Model->save(); , а затем использовать

unset($this->Model->id); 
+2

Это абсолютно неверный путь. Чтобы сбросить состояние модели, используется ['Model :: create()'] (http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-create-array -data-array), однако он не использует несколько вызовов 'Model :: save()', но ['Model :: saveAll()'] (http://book.cakephp.org/2.0/en/models/ save-your-data.html # model-saveall-array-data-null-array-options-array), поэтому проблема на самом деле является форматом данных, которые должны быть ['Model :: saveMany()'] (http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-savemany-array-data-null-array-options-array) совместимый. – ndm

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') 

редактировать: экзамен PLE код
вы можете адаптировать исходный код что-то вроде этого

$i = 0; 
foreach($categories as $category){ 
    echo $this->Form->input('Model.' .$i. '.field1'); 
    echo $this->Form->input('Model.' .$i. '.field2'); 
    $i++; 
} 
Смежные вопросы