Bonjour,

Je veux pouvoir récupérer les valeurs de mon formulaire directement apres le post(click sur le boutton envoyer) et non par angularjs puis php.
Tous les menus et sélects fonctionnes correctement mais lors du post certains champs sont vide ce que je ne comprends pas

Ce que je fais

dans mon formulaire je fait ceci

<div class="row" ng-controller="geolocalisationsCtrl" >
<div class="large-4 medium-4 columns">

</div>

<nav class="large-4 medium-4 columns" id="actions-sidebar">
    <ul class="side-nav">
        <li class="heading"><?= __('Actions') ?></li>
        <?=$this->Form->create(NULL,["class"=>"form","ng-submit"=>"sendform","url"=>["action"=>"savedata"]]) ?>
        <li>
         <?= $this->Form->input('ville_id',['type' => 'select','class' => 'form-control','options' =>$villes,'div'=>false,'label'=>false,'ng-change'=>'listearrondissement()','data-ng-model' => 'form.choixville','empty'=>'Choisir une ville']);?>

        </li>

                <li>

        <select  class="form-control" required="required" data-ng-model="form.arrondis" data-ng-change="listequartiers()" data-ng-options="arrondissement.id as arrondissement.nom_arrondissement for arrondissement in listarondissement" name="arrondissement.id">
            <option value='' disabled selected> Choisir un arrondissement</option>
        </select>

        </li>
         <li>

            <select  class="form-control" required="required" data-ng-model="form.quartier" data-ng-change="Support()" data-ng-options="quater.id as quater.nom_quartier for quater in listequartier" name="quartier" >
                 <option value='' disabled selected>Choisir une localité</option>
            </select>

        </li>
        <li>

            <select  class="form-control" required="required" data-ng-model="form.support" data-ng-change="Annonceur()" data-ng-options="support.id as support.nom_support for support in listesupport" name="support">
                 <option value='' disabled selected>Choisir un support</option>
            </select>

        </li>

         <li>

            <select  class="form-control" required="required" data-ng-model="form.annonceur" data-ng-change="detail()" data-ng-options="client.id as client.entreprise for client in listeannonceur" name="annonceur">
                 <option value='' disabled selected>Choisir un annonceur</option>
            </select>

        </li>
         <li>
            <input  data-ng-model="form.localisation" class="form-control" type="text" required="required" placeholder="repère ..." name="localite" />

        </li>

        <li>
        <input  class="form-control" type="file" file-input="files" required="required" name="file_localiser" />

        </li>
        <li>
            <input  ng-model="form.long" class="form-control" type="text" required="required" value="123" name="longitude" />
            <input  ng-model="form.lat" class="form-control" type="text" required="required" value="321"  name="latitude" />

        </li>
        <li>
           <button class="btn btn-primary" ng-submit="save">Envoyer</button>
        </li>
       <?= $this->Form->end() ?>
    </ul>

</nav>
<div class="large-4 medium-4 columns">

</div>
</div>

Ce que je veux

je veux que lorsque l'on clique sur submit, que le formulaire envoi les données avec les bonnes valeurs,
que dans mon action je puisse récupérer les valeurs exactes car tous les chamsp fonctionnents bien. lorsque je fait le save par angularjs, tous ce passe bien. Mais lorsque je veux utiliser php pour récupérer les données tous les champs sélects sont vide

Ce que j'obtiens

[
'ville_id' => '1',
'arrondissement_id' => '0',
'quartier' => '0',
'support' => '0',
'annonceur' => '0',
'localite' => 'ezr',
'file_localiser' => '723-header.jpg',
'longitude' => 'aze',
'latitude' => 'aze'
]

les valeurs quartier, support, arrondissement et annonceurs sont égales à 0

3 réponses


romses
Auteur
Réponse acceptée

résolu, il fallait juste ajuster les select de cette façon:

<div class="row" ng-controller="geolocalisationsCtrl" >
<div class="large-4 medium-4 columns">

</div>

<nav class="large-4 medium-4 columns" id="actions-sidebar">
    <ul class="side-nav">
        <li class="heading"><?= __('ENREGISTREMENT') ?></li>
        <?=$this->Form->create($geomap,["type"=>"file","class"=>"form","context"=>['validator'=>'default']]) ?>
        <li>
         <?= $this->Form->input('ville_id',['type' => 'select','class' => 'form-control','options' =>$villes,'div'=>false,'label'=>false,'ng-change'=>'listearrondissement()','data-ng-model' => 'form.choixville','empty'=>'Choisir une ville',"required"=>true]);?>

        </li>

                <li>

        <select  class="form-control" required="required" data-ng-model="form.arrondis" data-ng-change="listequartiers()"  name="arrondissement.id">
            <option value='' disabled selected> Choisir un arrondissement</option>
             <option ng-repeat="option in listarondissement" value="{{option.id}}">{{option.nom_arrondissement}}</option>
        </select>

        </li>
         <li>

            <select  class="form-control" required="required" data-ng-model="form.quartier" data-ng-click="localiser()" data-ng-change="Support()"  name="quartier_id" >
                 <option value='' disabled selected>Choisir un Quartier</option>
                  <option ng-repeat="option in listequartier" value="{{option.id}}">{{option.nom_quartier}}</option>
            </select>

        </li>

         <li>
            <input  data-ng-model="form.localisation" class="form-control" type="text" required="required" placeholder="Repère/rue ..." name="rue"  />

        </li>

        <li>

            <select  class="form-control" required="required" data-ng-model="form.support" data-ng-change="Annonceur()"  name="support_id">
                 <option value='' disabled selected>Choisir un support</option>
                 <option ng-repeat="option in listesupport" value="{{option.id}}">{{option.nom_support}}</option>
            </select>

        </li>

         <li>

            <select  class="form-control" required="required" data-ng-model="form.annonceur" data-ng-change="detail()" name="annonceur_id" >
                 <option value='' disabled selected>Choisir un annonceur</option>
                  <option ng-repeat="option in listeannonceur" value="{{option.id}}">{{option.entreprise}}</option>
            </select>

        </li>

        <li>
         <?= $this->Form->input('image1_file',['type'=>'file','label'=>'Image rapprochée',"required"=>true]); ?>

        <?= $this->Form->input('image2_file',["data-ng-model"=>"form.file2",'type'=>'file','label'=>'Image éloignée',"ng-click"=>"localiser()","required"=>true]); ?>

        </li>
        <li>
        <strong>Etat du support</strong>
        <?= $this->Form->radio('etat_support',[['value'=>'Neuf','text'=>'Neuf'],['value'=>'Moyen','text'=>'Moyen'],['value'=>'Dégradé','text'=>'Dégradé']],['label'=>'Etat du support','required'=>true]); ?>
        </li>
        <li>
         <?= $this->Form->input('commentaire',['type'=>'textarea']); ?>

        </li>

        <li>
            <input  ng-model="lng" class="form-control" type="hidden"  value="{{lng}}" name="longitude"  />
            <input  ng-model="lat" class="form-control" type="hidden"  value="{{lat}}" name="latitude" />
            <span>Longitude: </span><strong>{{lng}}</strong>
             <span>Latitude: </span><strong>{{lat}}</strong>

        </li>
        <li>
           <button class="btn btn-primary">Enregistrer</button>
        </li>
       <?= $this->Form->end() ?>
    </ul>

</nav>
<div class="large-4 medium-4 columns">

</div>
</div>

Salut,

Tu devrais gérer ton formulaire côté AngularJS ça serait bien plus simple ;)

romses
Auteur

je le fais déjà côté angular mais j'aimerai le faire côté php pour autres raisons