Jump to content

Edit History

Allyta

Allyta

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 😃

Allyta

Allyta

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 😃

×
×
  • Create New...