Bonjour,

je suis nouveau sur ce forum, merci de votre indulgence :D
j'ai déjà posté ce message dans la partie cakePHP, mais je crois finalement qu'il aura plus sa place ici...

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

7 réponses


Pierrot01
Réponse acceptée

je répète : :D
ou est le

<form> </form>

???

@plus

j'vois pas de

<form> </form>

@plus

bebs
Auteur

merci... c'est bien ce qui me tracasse :D

moi, ça me tracasse pas :D
@plus
Pierre

bebs
Auteur

hé hé :D

j'ai testé sur plusieurs navigateurs à postériori, mais pas mieux...
je ne vois pas ce que j'ai loupé...

bebs
Auteur

ha... ça ne l'affichait pas dans ton premier message...

Je ne l'ai pas collé, mais j'ai bien un

<?= $this->Form->create($personne) ?>

et

<?= $this->Form->end() ?>

qui génère un

<form></form>
bebs
Auteur

héhé... mais tu as mis le doigt sur le problème.
le

<form></form>

n'était pas encastré comme il faut...

Milles mercis !!