2013-02-08 47 views
0

我有一个表单与多个模型。 1型号将显示1条记录,其他型号将以表格格式显示多条记录。当我提交保存时,我只能得到每个模型的最后一个记录。我如何获取模型的所有记录?yii多表单与多个表单

这里是我如何使表单上的表格格式模型的样本

// lines tab 
    $lineListContent = "<div id='form_line_list'> 
     <table> 
     <tr> 
     <th>JOBNO</th> 
     <th>NAME</th> 
     <th>SEQ</th> 
     <th>DATEIN</th> 
     <th>DATEDONE</th> 
     <th>STATUS</th> 
     <th>PCENthONE</th> 
     <th>EARNED</th> 
     <th>VALUE</th> 
     <th>COMMENTS</th> 
     <th>SENTBACK</th> 
     <th>DATEDUE</th> 
     <th>ORIGTAPES</th> 
     </tr> 
     "; 
    $lineListContentRows = null; 
    foreach ($jobs as $i=>$item){ 
     $lineListContentRows = $lineListContentRows . $this->renderPartial('/jobs/_form', array('model'=>$item,'form'=>$form),TRUE); 
    } 
    $lineListContent = $lineListContent . $lineListContentRows . " 
       </table></div>"; 

for循环抓住的输入字段的模型

_form

<?php 
/* @var $this JobsController */ 
/* @var $model Jobs */ 
/* @var $form CActiveForm */ 
?> 

<div class="form"> 


    <tr> 
     <td><?php echo $form->textField($model,'JOBNO'); ?></td> 
     <td><?php echo $form->textField($model,'NAME'); ?></td> 
     <td><?php echo $form->textField($model,'SEQ'); ?></td> 
     <td><?php echo $form->textField($model,'DATEIN'); ?></td> 
     <td><?php echo $form->textField($model,'DATEDONE'); ?></td> 
     <td><?php echo $form->textField($model,'STATUS'); ?></td> 
     <td><?php echo $form->textField($model,'PCENTDONE'); ?></td> 
     <td><?php echo $form->textField($model,'EARNED'); ?></td> 
     <td><?php echo $form->textField($model,'VALUE'); ?></td> 
     <td><?php echo $form->textField($model,'COMMENTS'); ?></td> 
     <td><?php echo $form->textField($model,'SENTBACK'); ?></td> 
     <td><?php echo $form->textField($model,'DATEDUE'); ?></td> 
     <td><?php echo $form->textField($model,'ORIGTAPES'); ?></td> 
    </tr> 


</div><!-- form --> 

回答

1

如果你想保存表格数据,你必须在数字前面加上括号中的属性。所以

foreach ($jobs as $i=>$item){ 
     $lineListContentRows = $lineListContentRows . $this->renderPartial('/jobs/_form', array('model'=>$item,'form'=>$form,'i'=>$i),TRUE); 
    } 

,并在您_form.php改变每个textField的第二个参数作为

<td><?php echo $form->textField($model,"[$i]JOBNO"); ?></td>// remember use double quotes 

如果所做的更改如上你$_POST['modelName']将包含数据的阵列。遍历一个forloop并保存每个项目。欲了解更多信息,请查询official documentation.