Jump to content

[Résolu] Récupérer une variable depuis du JavaScript (dans un TPL) dans un AdminController (.php)


Recommended Posts

Bonjour (^-^)/
J'ai développé un formulaire dans lequel il est possible d'ajouter/supprimer des lignes et je cherche à récupérer ma variable counter (qui compte le nombre de lignes ajoutées).
Cette variable est déclarée et incrémentée dans du javascript dans le tpl du formulaire et je voudrais l'exploiter dans mon AdminController (dans la fonction PostProcess() pour être précise).

Je mets le javascript ici mais les dévs sensibles au code dégueu feraient mieux de ne pas regarder ^-^ll
 

{*
* Affichage du formulaire d'ajout d'une réception.
*}
<div class="panel">
<!-- FORMULAIRE A REMPLIR -->
<div class="form_formulaire_reception">
    <form name="reception" method="post" action="">
		<!-- les champs du formulaire -->
  	</form>
          <td><a class="deleteRow"></a></td> 
        <tfoot>
        <tr>
          <td colspan="12" style="text-align: left;">
             <input type="button" class="btn btn-lg btn-block " id="addrow" value="Ajouter un ingrédient" />
          </td>
        </tr>
        </tfoot>
    </div>
    <p><p>
    <input type="submit" class="btn btn-lg btn-block" style="background-color: #4CAF50;color: white;" name="validerAjoutReception" value="VALIDER"/>
  </form>
  </div>


  <script type="text/javascript">
  //JS qui génère des lignes supplémentaires pour ajouter des ingrédients
  $(document).ready(function () {
    var counter = 0; // <= LA VARIABLE EN QUESTION
    $("#addrow").on("click", function () {
      var newRow = $("<tr>");
      var cols = ""; 

      //Select ingrédients
      let ingredientSelTd = document.createElement("td");
      let ingredientSel = document.getElementById("id_ingredient_select");
      let newIngredientSel = ingredientSel.cloneNode(true);
      newIngredientSel.id = "id_ingredient_select" + counter;
      newIngredientSel.name = "id_ingredient_select" + counter;
      let newIngredientSelTd = document.createElement("td");
      newIngredientSelTd.append(newIngredientSel);

      //Select unité de mesure
      let uniteSel = document.getElementById("id_unite_select");
      let newUniteSel = uniteSel.cloneNode(true);
      newUniteSel.id = "id_unite_select" + counter;
      newUniteSel.name = "id_unite_select" + counter;
      let newUniteSelTd = document.createElement("td");
      newUniteSelTd.append(newUniteSel);

      cols += '<td><input type="text" class="form-control" pattern="[A-Za-z0-9/^[^<>;=#]*$/u] placeholder="N° de lot fournisseur" id="num_lot_fournisseur' + counter + '" name="num_lot_fournisseur' + counter + '"/></td>';
      cols += '<td><input type="text" class="form-control" pattern="[A-Za-z0-9/^[^<>;=#]*$/u] placeholder="N° de lot" id="num_lot_reception' + counter + '" name="num_lot_reception' + counter + '"/></td>';
      cols += '<td><input type="date" class="form-control" placeholder="DLC/DDM fournisseur" id="ddm_fournisseur_reception' + counter + '" name="ddm_fournisseur_reception' + counter + '"/></td>';
      cols += '<td><input type="date" class="form-control" placeholder="DLC/DDM" id="ddm_reception' + counter + '" name="ddm_reception' + counter + '"/></td>';
      cols += '<td style="text-align: center;"><input type="checkbox" value="1" onclick="if (this.checked) this.value=1; else this.value=0;" class="form-check-input" id="quantite_conforme' + counter + '" name="quantite_conforme' + counter + '" checked/></td>';
      cols += '<td style="text-align: center;"><input type="checkbox" value="1" onclick="if (this.checked) this.value=1; else this.value=0;" class="form-check-input" id="integrite_reception' + counter + '" name="integrite_reception' + counter + '" checked/></td>';
      cols += '<td><input type="text" class="form-control" placeholder="Quantité reçue" id="quantite_reception' + counter + '" name="quantite_reception' + counter + '"/></td>';
      
      // Bouton de suppression
      let deleteBtn = document.createElement("input");
      deleteBtn.setAttribute("type", "button");
      deleteBtn.setAttribute("class", "ibtnDel btn btn-md btn-danger");
      deleteBtn.setAttribute("value", "Supprimer");
      let deleteBtnTd = document.createElement("td");
      deleteBtnTd.append(deleteBtn);


      // Appends
      newRow.append(newIngredientSelTd);
      newRow.append(cols);
      newRow.append(newUniteSelTd);
      newRow.append(deleteBtnTd);
      $("table.order-list").append(newRow);
      counter++;
    });
    $("table.order-list").on("click", ".ibtnDel", function (event) {
      $(this).closest("tr").remove();       
      //counter -= 1;
    });
  });
  </script>
</div>


J'ai vu qu'on pouvais faire le chemin inverse avec addJsDef donc je me dis qu'il existe surement quelque chose pour faire ce que j'essaie de faire. 

Merci à ceux qui tenteront de m'aider 😃

Edited by Allyta (see edit history)

Share this post


Link to post
Share on other sites

Bonjour,

Il te suffit de mettre la valeur de ton compteur dans un champ input hidden dans le formulaire.
Tu pourra ensuite récupérer la valeur de ce champ lors de la soumission php de celui-ci.

  • Thanks 1

Share this post


Link to post
Share on other sites

  • Allyta changed the title to [Résolu] Récupérer une variable depuis du JavaScript (dans un TPL) dans un AdminController (.php)

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More