Cele bloga
Po przeczytaniu tego bloga będziemy mogli skopiować wózek na inny koszyk, aby zmienić identyfikator koszyka.
Wymaganie
Musimy zmodyfikować poniższy plik, aby naprawić to samo. Będziemy wprowadzać zmiany w pliku Core dla tego samego.
Katalog główny \ classes \ PaymentModule.php
Procedura
Musimy zmodyfikować funkcję sprawdzania poprawności w pliku klasy PaymentModule. Ponieważ ta funkcja jest wywoływana tylko raz podczas wypełniania zamówienia. Dodaliśmy kod w ten sam sposób, aby uniknąć tworzenia wielu koszyków.
if (self :: DEBUG_MODE) {PrestaShopLogger :: addLog ('PaymentModule :: validateOrder - funkcja o nazwie', 1, null, 'Cart', (int) $ id_cart, true); } if (! isset ($ this-> context)) {$ this-> context = Context :: getContext (); } $ this-> context-> cart = new Koszyk ((int) $ id_cart);
Poniższy kod należy dodać w funkcji sprawdzania poprawności po powyższych liniach.
// rozpoczęte zmiany // Aby zapisać bezpieczny klucz z bieżącym identyfikatorem koszyka i ponownie przypisać go do nowego koszyka $ old_cart_secure_key = $ this-> context-> cart-> secure_key; // Aby zapisać identyfikator klienta o aktualnym identyfikatorze koszyka i ponownie przypisać go do nowego koszyka $ old_cart_customer_id = (int) $ this-> context-> cart-> id_customer; // Odmówienie klienta ze starego koszyka $ this-> context-> cart-> id_customer = 0; // Aby zaktualizować koszyk $ this-> context-> cart-> save (); // Aby pobrać aktualne produkty koszyka $ cart_products = $ this-> context-> cart-> getProducts (); // Tworzenie nowego obiektu koszyka $ this-> context-> cart = new Cart (); $ this-> context-> cart-> id_lang = $ this-> context-> language-> id; $ this-> context-> cart-> id_currency = $ this-> context-> currency-> id; // aby dodać nowy koszyk $ this-> context-> cart-> add (); // aby zaktualizować nowy foreach koszyka ($ cart_products jako $ product) {$ this-> context-> cart-> updateQty ((int) $ product ['quantity'], (int) $ product ['id_product'], (int) $ product ['id_product_attribute']); } if ($ this-> context-> cookie-> id_guest) {$ guest = new Guest ($ this-> context-> cookie-> id_guest); $ this-> context-> cart-> mobile_theme = $ guest-> mobile_theme; } // aby zmapować nowy koszyk z klientem $ this-> context-> cart-> id_customer = $ old_cart_customer_id; // aby zapisać nowy koszyk $ this-> context-> cart-> save (); if ($ this-> context-> cart-> id) {$ this-> context-> cookie-> id_cart = (int) $ this-> context-> cart-> id; $ this-> context-> cookie-> write (); } //, aby zaktualizować identyfikator $ id_cart do nowego koszyka $ id_cart = (int) $ this-> context-> cart-> id; $ this-> context-> cart-> secure_key = $ old_cart_secure_key; // zmienia się
Po wykonaniu powyższej procedury lista zakupów będzie wyglądać tak, np. Mając duplikat koszyka z tymi samymi danymi, co koszyk, z którym zostało złożone zamówienie.
Podsumowanie
Po wykonaniu powyższej procedury będziesz mógł skopiować wózek na inny wózek w celu zmiany id_cart.