【问题标题】:yii multi records on multi form with multi modelsyii 多模型多表格多记录
【发布时间】:2013-02-08 10:12:41
【问题描述】:

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

这是我如何在表单上呈现表格格式模型的示例

  // 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 -->

【问题讨论】:

    标签: php linux forms yii


    【解决方案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.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多