Bonjour,

je suis nouveau sur ce forum, merci de votre indulgence :D

dans un projet cakePHP, j'ai besoin d'associer plusieurs adresses à une personne. Le nombre d'adresses n'étant pas défini, j'utilise jquery pour générer des champs supplémentaires, mais ces champs générés ne sont pas posté... ?

ben... pourquoi ?

voilà mon add.ctp

<div class="box-body" id="lesadresses">
   <fieldset id="adresses-0">
      <input type="hidden" name="adresses[0][id]" id="adresses-0-id">
      <div class="form-group col-xs-8">
          <label>N° et Voie</label>
          <input type="text" name="adresses[0][nomvoie]" maxlength="250" id="adresses-0-nomvoie" class="form-control">
       </div>
       <div class="form-group col-xs-4">
            <label>Ville</label>
            <select id="adresses-0-ville_id" name="adresses[0][ville_id]" class="form-control">
            <?php $optionsLesVilles ='';
                    foreach ($villes as $villeid => $ville) :
                      $optionsLesVilles .= '<option value="'.$villeid.'">'.$ville.'</option>';
                     endforeach;
                      echo $optionsLesVilles;
              ?>
            </select>
        </div>
    </fieldset>
 </div>
<script>
/* Ajout et suppression d'une adresse */
  var derniereadresse = 0;
  $('#adresse-plus').click(
    function(){
      var prochaineadresse = derniereadresse+1;
      $("#adresses-"+prochaineadresse).removeClass('hidden');
      var dernierinputa = "#adresses-"+derniereadresse;

      var c = $('#adresses-0').clone();
      var cplus = c.html().replace(/adresses-0/g, 'adresses-'+prochaineadresse);
      c = cplus.replace(/adresses\[0/g, 'adresses['+prochaineadresse);
      c = '<fieldset id="adresses-'+prochaineadresse+'">'+c+'</fieldset>';
      $(dernierinputa).after(c);

      if (derniereadresse<1) $('#adresse-moins').removeClass("disabled");
      derniereadresse++

    }
  );
  $('#adresse-moins').click(
    function(){
      if ( !$(this).hasClass("disabled")){
        $("#adresses-"+derniereadresse).remove();
        derniereadresse--;
        if(derniereadresse<1) $(this).addClass("disabled");
      }
    }
  );
</script>

cakePHP

j'ai placé un

die(debug($_POST));

dans mon controleur

je remplis mon formulaire avec 2 adresses, mais :

voilà le retour :

/src/Controller/PersonnesController.php (line 57)
[
    '_method' => 'POST',
    'prenom' => 'Bruce',
    'nom' => 'Wayne',
    'naissance' => '10/10/2010',
    'telephones' => [
        (int) 0 => [
            'id' => '',
            'numero' => '111111111'
        ],
        (int) 1 => [
            'id' => '',
            'numero' => '222222222'
        ]
    ],
    'mails' => [
        (int) 0 => [
            'id' => '',
            'email' => 'bruce@wayne-enterprise.com'
        ],
        (int) 1 => [
            'id' => '',
            'email' => 'ihatebats@hotmail.com'
        ]
    ],
    'adresses' => [
        (int) 0 => [
            'id' => '',
            'nomvoie' => '4e avenue',
            'ville_id' => '49'
        ]
    ]   
]

On voit que j'ai créé dynamiquement des champs téléphones et mails qui sont pris en compte... mais pas les adresses ?
Les champs téléphones et mails ne crées que 2 inputs :

  • un hidden pour l'id
  • un input

Je ne comprends pas...

Merci à tous !!

1 réponse


bebs
Auteur
Réponse acceptée

Le sujet a été résolu ici
Merci beaucoup à Pierrot01
:D