2017-08-25 4 views
0

Ich benutze Prestashop 1.7.2.1, um ein Modul mit einem Front-Controller zu bauen.mit Prestashop 1.7 Smarty-URL-Tag in einem von Action-Eigenschaft

was ich versuche, ist das Hinzufügen der Smarty {url} Tag der Action-Eigenschaft des Formulars. Das Problem ist, dass, sobald ich das Formular abschicke, alle Get-Parameter, die in der Aktion zur Verfügung gestellt werden, von der Eigenschaft gelöscht werden. Dies ist ein normales Verhalten in HTML.

dies ist mein 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> 

General In ich, dass Smarty {url}-Tag auf eine Variable einfügen können. Bei submit fügen Sie die Werte der Formularfelder dynamisch zu der von mir erstellten Variablen hinzu und verwenden sie zum Umleiten, anstatt dem Formular das Senden zu erlauben.

Ich weiß nur nicht, ob dies die beste Lösung ist.

vielleicht gibt es etwas, das ich vermisst habe.

irgendwelche Ideen?

danke

Antwort

0

für jetzt, was ich tat, ist versteckte Eingabeelemente in das Formular auf der erstellten URL-Zeichenfolge basiert hinzuzufügen.

Ich habe dies in der ersten Zeile von meiner Vorlage-Datei:

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

und auf die Funktion einreichen habe ich den folgenden Code:

... 
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" />`); 
      }); 
     } 

diese Methode fühlt sich ein bisschen .. Hacky? ! :) Ich möchte nur sicherstellen, dass dies der richtige Weg ist

Verwandte Themen