2016-04-04 8 views
0

Ich habe eine Prestashop-Setup, die eine kleine "Anpassungsform" hat, die derzeit die Informationen auf die Standard-Customization-Texteingabe Produkte speichert. Ich habe dies getan, um Zeit zu sparen, weil ich ein komplettes benutzerdefiniertes Modul schreiben musste, um zusätzliche Anpassungsformularfelder und ähnliches hinzuzufügen.Decode Product Customization auf Frontend und Backend (und E-Mails)

Aktuell alle Eingänge sind serialisiert (json) und als lange Zeichenfolge in die Texteingabe wie folgt eingegeben:

Client Customization: %5B%5B%7B%22name%22%3A%22trophy%5B1%5D%5Bline1%5D%22%2C%22engraving%22%3A%22Test%20Trophy%22%7D%2C%7B%22name%22%3A%22trophy%5B1%5D%5Bline2%5D%22%2C%22engraving%22%3A%22test%20trophy%22%7D%2C%7B%22name%22%3A%22trophy%5B1%5D%5Bline3%5D%22%2C%22engraving%22%3A%221111111%22%7D%5D%5D 

Am vorderen Ende - wenn die kundenspezifische Daten angezeigt I PHP verwenden kann, um zu dekodieren & zeigen Sie es entsprechend an.

Gibt es einen Weg, wo ich das global irgendwo ändern kann, so muss ich nicht versuchen, jeden Platz zu finden, wo es diesen PHP-Code anzeigen und hinzufügen könnte?

Ich stoße auf das Problem, dass ich nicht finde, wo ich den PHP-Code finde, um diese Zeichenfolge für die gesendeten E-Mails zu "dekodieren" - so wird die lange hässliche Zeichenfolge angezeigt die netten paar Zeilen der Anpassung, die der Benutzer eingegeben hat.

Irgendwelche Gedanken, wie man damit umgeht? Gibt es eine Stelle, an der ich die decodierte Zeichenfolge global der Produktanpassung zuweisen kann?

Antwort

0

Sie könnten entweder die PaymentModule-Klasse versuchen, um die Zeichenfolge zu decodieren, bevor die E-Mails gesendet werden, oder die Methode "getAllCustomizedDatas" von Product für eine "globalere" Methode. Und dann viel testen, natürlich :)

Hier ist ein kurzer Entwurf des zweiten Ansatzes:

<?php 
class Product extends ProductCore 
{ 
    public static function getAllCustomizedDatas($id_cart, $id_lang = null, $only_in_cart = true, $id_shop = null) 
    { 
     $datas = parent::getAllCustomizedDatas($id_cart, $id_lang, $only_in_cart, $id_shop); 

     /* 
     * Iterate over $datas, you're looking for 
     * [id_product][id_product_attribute][id_address_delivery][id_customization][datas] 
     * Datas will contain an array of fields broken by their type. You can then decode 
     * the ones that need to be decoded and return the result: 
     */ 

     return $datas; 
    } 
} 
+0

ich für die Produktklasse eine Überschreibung nur hinzufügen kann nur mit dem Verfahren ‚getAllCustomizedDatas‘ drin, Recht? – Hanny

+0

Ja, du solltest das können. Siehe die bearbeitete Antwort – Eihwaz