0

複数のモデルがあるフォームがあります。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ループは、そのモデルの入力フィールドを取得します

_形

<?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 -->
4

1 に答える 1

1

表形式のデータを保存する場合は、属性の前に括弧で囲まれた数字を付ける必要があります。そう

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

そしてあなたの_form.php変更では、それぞれtextFieldの2番目の引数を次のように

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

上記のように変更する$_POST['modelName']と、データが配列として含まれます。a を反復処理し、forloop各項目を保存します。詳細については、公式ドキュメントを確認してください。

于 2013-02-08T12:50:26.003 に答える