2016-07-21 9 views
0

Ich arbeite in App mit CakePHP 3, in dieser App die Admin-Benutzer können für andere Benutzer, die ich versuche zu registrieren, ist die Erlaubnis, die Benutzer zu erstellen, mehrere zahlt an registrieren Einmal in der gleichen Ansicht, ein Pay pro Benutzer. Was ich getan habe, ist zuerst ein Formular zu erstellen, das die Felder für jeden Benutzer wiederholt.Mehrere Formulare, eine Submit-Taste in CakePHP 3

Das Problem ist, wenn ich auf den Absenden-Button klicke (ich will nur einen), die Daten, die ich in meinem Controller empfange, sind immer die Daten der letzten Felder. Ich weiß nicht, wie ich damit richtig umgehen soll. Hier

ist der Code, der mi Ansicht:

addMulti.ctp

<div class="pagos form col-lg-offset-2 col-lg-7"> 
<?= $this->Form->create(false) ?> 
<?php foreach ($users as $user): 
     echo '<br><strong>'.$user->full_name.'</strong>'; 
     echo $this->Form->checkbox('selected',['id'=>'select-'.$user->id,'onclick'=>'display_add_form('.$user->id.')']).'<br>'; 
     echo '<div style="display: none;" id= form-'.$user->id.'>'; 
     echo $this->Form->input('user_id', array(
      'type' => 'hidden', 
      'value' => $user->id, 
      'id'=>'user-'.$user->id 
     )); 
     echo $this->Form->input('mes', ['type' => 'month','selected'=>'0','id'=>'month-'.$user->id]); 
     echo $this->Form->input('monto',['default' => $user->monto_paga,'id'=>'monto-'.$user->id]); 
     echo $this->Form->input('año', ['type' => 'year', [ 
      'minYear' => date('Y')-2, 
      'maxYear' => date('Y')+2 
     ],'value'=> date('Y'),'id'=>'year-'.$user->id]); 
     echo $this->Form->input('forma_pago', ['options'=>['Efectivo'=>'Efectivo','Transferencia'=>'Transferencia','Cheque'=>'Cheque'],'id'=>'pago-'.$user->id]); 
     echo $this->Form->button('Cancelar',['type'=>'button','onclick'=>'hide_add_form('.$user->id.')','class'=>'btn btn-danger','id'=>'cancel-'.$user->id]); 
     echo '</div>'; 
    endforeach; 
    echo $this->Form->button(__('Agregar Pagos'),['class'=>'btn btn-primary']); 
    echo $this->Form->end(); ?> 

<script> 
function display_add_form(id){ 
    $("#form-"+ id).show('fast'); 
    $("#select-"+ id).hide(); 
} 
function hide_add_form(id) { 
    $("#form-"+ id).hide('fast'); 
    $("#select-"+ id).show(); 
} 

Antwort

2

Um die Antwort von @Asif fortzusetzen, wäre es einfacher, wenn Sie jeden Benutzer separat speichern.

... 
echo $this->Form->input('users['.$user->id.'][mes]', ['type' => 'month','selected'=>'0','id'=>'month-'.$user->id]); 
echo $this->Form->input('users['.$user->id.'][monto]',['default' => $user->monto_paga,'id'=>'monto-'.$user->id]); 
... 

Auf diese Weise können Sie eine einfache Schleife im Backend verwenden könnte, wie:

<?php 
foreach($input['users'] as $userId => $user){ 
    echo $user['mes']; 
} 
+0

Es ist Arbeit, vielen Dank –

1

Sie den eingereichten Namen als Array setzen können, so dass Sie Erhalten Sie alle Ihre POST-Wert im Array, weil Sie postin sind g Mehrfacher Wert unter einer einzelnen Variable. Ich gebe einfach ein einfaches html Eingabefeld Beispiel unten. Ich wünsche Ihnen, dass Sie wissen, wie man in cakephp hinzufügt.

<input type="text" name="year[]" id="your-id">