2017-08-25 3 views
0

J'utilise prestashop 1.7.2.1 pour construire un module avec un contrôleur frontal. Ce que j'essaie de faire est d'ajouter la balise smarty {url} à la propriété action du formulaire. le problème est que, une fois que je soumets le formulaire, tous les paramètres get fournis dans la propriété action du from sont effacés. c'est un comportement normal en html.en utilisant la balise 1.7 smarty url de prestashop dans une propriété d'action

ceci est mon code:

<form id="car-type-form" action="{url entity='module' name='tuxinmodcartype' controller='cartypeproducts'}" method="get"> 
    <div id="company-name-input-form-group" class="form-group row"> 
     <label for="company-name-input" class="col-sm-2 col-form-label">Company</label> 
     <div class="col-sm-10"> 
      <input type="text" class="form-control" id="company-name-input" name="company_name" placeholder="Company" aria-label="Company" required="required"/> 
     </div> 
    </div> 
... 
</form> 

En général je peux coller cette balise Smarty {url} à une variable. sur submit pour ajouter dynamiquement les valeurs des champs de formulaire à la variable que j'ai créée et l'utiliser pour rediriger au lieu de permettre au formulaire de soumettre. Je ne sais pas si c'est la meilleure solution.

peut-être qu'il y a quelque chose que j'ai raté.

des idées?

merci

Répondre

0

pour l'instant ce que je faisais est d'ajouter des éléments d'entrée cachés à la forme en fonction de la chaîne url créée.

J'ai ceci sur la première ligne de mon fichier modèle:

<script type="text/javascript"> 
    var carTypeProductsUrl='{url entity='module' name='tuxinmodcartype' controller='cartypeproducts'}'; 
</script> 

et sur la fonction d'envoi, j'ajouté le code suivant:

... 
if (isError) { 
      event.preventDefault(); 
     } else { 
      $('.hidden-form-params').remove(); 
      var params = carTypeProductsUrl.substr(carTypeProductsUrl.indexOf('?')+1).split('&'); 
      params.forEach((paramStr)=>{ 
       var paramsArray = paramStr.split('='); 
       const paramKey = paramsArray[0]; 
       const paramvalue = paramsArray[1]; 
       $('#car-type-form').append(`<input type="hidden" name="${paramKey}" value="${paramvalue}" class="hidden-form-params" />`); 
      }); 
     } 

cette méthode se sent un peu .. aki? ! :) Je veux juste m'assurer que c'est la voie à suivre