2017-04-17 13 views
0

同じエンティティの複数の行を保存しようとしていますが、フォームの作成に失敗しています。Cakephp 3フォームから複数のエンティティの行を作成する

..だからこれは私のコントローラです:CuotasController

$cuotas = array(); 
    $date = Time::create($inicioPago->year, $inicioPago->month, $inicioPago->day); 
    $meses = 0; 

    while ($date < $finPago) { 
     $cuota = $this->Cuotas->newEntity(); 
     $cuota->vencimiento = $date; 
     array_push($cuotas, $cuota); 
     $date = Time::create($date->year, $date->month + 1, $date->day); 
     $meses = $meses + 1; 
    } 

は基本的には、このコードでは、私はCuotasの配列(私のエンティティ)と移入動的にその配列を生成します。

だからここに、フォームの:

    <?= $this->Form->create($cuotas) ?> 
        <?php foreach ($cuotas as $cuota): ?> 
        <tbody> 
         <tr> 
          <td> 
           <div class="form-group"> 
            <div class="input text required"> 
             <?php echo $this->Form->input('vencimiento', ['required' => true, ['class' => 'form-control'] ]); ?> 
            </div> 
           </div> 
          </td> 
          <td> 
           <div class="form-group"> 
            <div class="input text required"> 
             <?php echo $this->Form->input('monto_pesos', ['required' => true, 'class' => 'form-control' ]); ?> 
            </div> 
           </div> 
          </td> 
          <td> 
           <div class="form-group"> 
            <div class="input text required"> 
             <?php echo $this->Form->input('monto_dolares', ['required' => true, 'class' => 'form-control' ]); ?> 
            </div> 
           </div> 
          </td> 
         </tr> 
        <?php endforeach; ?> 
        </tbody> 
       </table> 
       <?= $this->Html->link(__('Volver'), ['action' => 'index'] , array('class'=>'btn btn-danger', 'style' => 'margin-top:1em')) ?> 
       <?= $this->Form->button(__('Guardar'), ['class'=>'btn btn-success', 'style' => 'margin-top:1em']) ?> 
       <?= $this->Form->end() ?> 

は最後に、コントローラでは、これは私がエンティティにパッチを適用しようとする方法である:私はそれをすべてをめちゃくちゃにしていますどこ

$entities = $this->Cuotas->newEntities($this->request->data); 

あなたは知っていますか?

ありがとうございます!

+0

フィールド名を使用してフォームデータを送信した後、すべてのフィールド名が同じであることを確認してから、異なるフィールドに異なる名前を使用するか、アレイタイプ名 を使用してください。配列$ data = [[]、[]、[]、[]] の配列セットにデータを入力すると、 を使用できます。 $ entities = $ this-> Cuotas-> newEntities ($データ); $ this-> Cuotas-> saveMany($ entities); – ashanrupasinghe

答えて

0

各繰り返しでフォームを上書きしていると思います。次の行で、それは同じに見える場合

<input name="abc[property_name]" /> 

チェック:

がこのように見える場合、HTMLは、コードを生成し検査します。あなたが提出されたときに識別するために、エンティティのIDを使用している場合

<input name="abc[0][one_prop]" /> 
<input name="abc[0][other_prop]" /> 

<input name="abc[1][one_prop]" /> 
<input name="abc[1][other_prop]" /> 

がはるかに優れている:

あなたはこのようなものを持っているsould。

関連する問題