Witam
Problem mam następujący - kupując jakiś towar w sklepie Isotope mogę się zalogować i moje dane są przenoszone do formularza koszyka (checkout) lub kontynuować zakupy bez logowania - wpisuję dane do faktury.
Teraz potrzebuję przywołać te dane w następnych krokach - ale nie z poziomu Contao używając tagów np ##billing_address## (czego używam w mailu potwierdzającym np) ale chciałbym te wartości przypisać do zmiennych php. Rozwiązanie pewnie dziecinnie proste, ale gdzieś mi to umyka.
Żeby rozjaśnić - chciałbym np Imię wpisane przez kupującego w formularzu umieścić w kolejnych krokach na innej stronie, przesłać do płatności ... cokolwiek.
Próbuję zatem pod zmienna np $imie przypisać wpisaną wartość, np:
$imie = $GLOBALS['TL_LANG']['tl_iso_addresses']['firstname'];
lub np
$imie2 = $this->Isotope->Cart->billingAddress['firstname'];
Nie działa, zmienna $imie pozostaje pusta.
proszę o podpowiedź jak mogę się do tego dobrać
Pozdrawiam
Witamy na polskim forum Contao
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!

isotope - przenoszenie danych z formularza
Rozpoczęty przez kylu123, paź 26 2011 14:57
#5
Napisano 28 października 2011 - 10:22

#7
Napisano 02 listopada 2011 - 16:29

Bo czy dobrze rozumiem:
wpisuję dane do formularza z danymi - są one wrzucane wszystkie do jednego worka (this->Template->info = deserialize($arrOrder['checkout_info'], true)
i tak potem wyświetlane w orderdetails i order review :
A czy nie można by pójść tutaj w drugą stronę i rozbić to znów (unserialize)
Teoretyzuję, bo jak wspomniałem nie jestem programistą, ale próbuję to jakoś rozgryźć.
Pozdr
wpisuję dane do formularza z danymi - są one wrzucane wszystkie do jednego worka (this->Template->info = deserialize($arrOrder['checkout_info'], true)

<?php foreach( $this->info as $type => $data ): ?> <div class="info_container <?php echo $type . $data['class']; ?>"> <h3><?php echo $data['headline']; ?></h3> <div class="info"><?php echo $data['info']; ?></div> </div> <?php endforeach; ?>
A czy nie można by pójść tutaj w drugą stronę i rozbić to znów (unserialize)
Teoretyzuję, bo jak wspomniałem nie jestem programistą, ale próbuję to jakoś rozgryźć.
Pozdr
#8
Napisano 03 listopada 2011 - 20:17

A spróbuj zrobić tak. W ModuleIsotopeCheckout.php w każdej metodzie, która ma taką strukturę getXxxxxInterface, odnajdź skrawek kodu:
$objTemplate = new IsotopeTemplate('iso_checkout_xxx_method'); // i dodaj $objTemplate->setData($this->getCheckoutInfo()); // lub $objTemplate->setData($this->arrCheckoutInfo);I sprawdź czy poniższy kod wypluwa to co powinien (w iso_checkout_xxx_method):
<?php $this->showTemplateVars(); ?>
Codefog - Contao web development
#10
Napisano 11 listopada 2011 - 21:34

Hej
Kamilu dzięki za pomysły. Ostatni działa, tzn prawie
Wywołując te dane przez sesję ale jeszcze przed potwierdzeniem zakupu, czyli jakby w czwartym ostatnim kroku checkout (z poziomu checkout_order_review), ma dostęp do nich wszystkich, jest super. Ale chcąc użyć tej metody do wywołania danych w następnym kroku czyli już po zatwierdzeniu zakupu (w checkout_order_details) już są nieaktywne, pewnie Isotope/Contao zabija w tym momencie sesję.
Da się to jakoś prosto obejść?
Pozdrawiam
Kamilu dzięki za pomysły. Ostatni działa, tzn prawie

Wywołując te dane przez sesję ale jeszcze przed potwierdzeniem zakupu, czyli jakby w czwartym ostatnim kroku checkout (z poziomu checkout_order_review), ma dostęp do nich wszystkich, jest super. Ale chcąc użyć tej metody do wywołania danych w następnym kroku czyli już po zatwierdzeniu zakupu (w checkout_order_details) już są nieaktywne, pewnie Isotope/Contao zabija w tym momencie sesję.
Da się to jakoś prosto obejść?
Pozdrawiam
#11
Napisano 11 listopada 2011 - 23:14

Dziś już nie chce mi się sprawdzać, ale te dane można pewnie uratować przez przypisanie je do innego elementu sesji, na przykład:
$_SESSION['CLIENT_DATA'] = $_SESSION['CHECKOUT_DATA']; // i po wykonaniu płatności echo 'Dzięki za zakupy, ' . $_SESSION['CLIENT_DATA']['billing_address']['firstname'] . '!';
Codefog - Contao web development
#13
Napisano 14 listopada 2011 - 22:25

Kamilu jeszcze jedno - razem z tymi danymi muszę przesyłać dane "z templatki" czyli kwotę, nr zamówienia itp. Jeśli umieszczam swój kod php bezpośrednio w templatce to mam dostęp również do tych danych. Jeśli jednak includuję plik *.php (przez Twój moduł "custom module") to do zminnych sesji jak najbardziej mam dostęp ale do templatkowych już nie. Chciałbym pozostać przy wersji includowania pliku ponieważ jeśli wpiszę kod na stałe powiedzmy w order_details.php to to co tam wpisze pojawi mi się nie tylko we front endzie ale również w podglądzie zamówień w backendzie w panelu osoby zarządzającej zamówieniami - widocznie używają tej samej templatki 
Podpowiesz jak to obejść?
Dzięki z góry i pozdrawiam

Podpowiesz jak to obejść?
Dzięki z góry i pozdrawiam
#16
Napisano 15 listopada 2011 - 22:53

Pojawił się jeszcze jeden problem - przypisuję sobie
$_SESSION['ORDER_ID'] = $this->order_id;
$_SESSION['KWOTA'] = $this->grandTotal;
bo te dwie zmienne mnie interesują, wywołuję je potem tam gdzie potrzbuję
I na dzieńdobry mi tych zmiennych nie przypisuję, ale jak odświeżę stronę "ręcznie" to są przypisywane poprawnie, tyle tylko że w FX i IE pozostałe zmienne są pamiętane to w Operze zmienne które przypisałem wcześniej czyli
$_SESSION['CLIENT_DATA'] = $_SESSION['CHECKOUT_DATA'];
są czyszczone.
??
pozdr
$_SESSION['ORDER_ID'] = $this->order_id;
$_SESSION['KWOTA'] = $this->grandTotal;
bo te dwie zmienne mnie interesują, wywołuję je potem tam gdzie potrzbuję
I na dzieńdobry mi tych zmiennych nie przypisuję, ale jak odświeżę stronę "ręcznie" to są przypisywane poprawnie, tyle tylko że w FX i IE pozostałe zmienne są pamiętane to w Operze zmienne które przypisałem wcześniej czyli
$_SESSION['CLIENT_DATA'] = $_SESSION['CHECKOUT_DATA'];
są czyszczone.
??
pozdr
#17
Napisano 19 listopada 2011 - 08:47

Wiem gdzie leży problem.
Żeby usystematyzować w moim sklepie procesy zachodzą następująco:
1. przed ostatecznym potwierdzeniem zakupów z poziomu templatki iso_checkout_order_review przypisuje sobie zmienne do sesji
oraz już z tąd mogę przypisać kwotę do zmiennej sesji:
dzięki temu mam dane użytkownika dokonującego zakupów oraz z zmiennej przypisaną kwotę którą spokojnie odczytam w dołączonym pliku
Do pełni szczęści brakuje mi tylko jeszcze zapisania do sesji zmiennej numeru zamówienia - order_id, ponieważ z tego poziomu ona nie istnieje!!
Numer zamówienia pojawia się dopiero w następnym kroku czyli po potwierdzeniu zamówienia z poziomu mod_iso_orderdetails i dlatego nie mam do niego dostępu w pierwszym kroku. Dlatego też pojawił się problem z tym odświeżaniem ręcznym o którym pisałem w poprzednim poście.
Jakie rozwiązanie? Nie wiem - ponieważ muszę z poziomu jednej strony - mod_iso_orderdetails (bez odświeżania jej) przypisać zmienną order_id coby była widoczna w dołączanym pliku.
W tym momencie na stałe do templatki dopinam plik php więc dostęp do zmiennych mam od ręki, ale rozwiązanie takie nie jest dobre ponieważ jak pisałem wyżej frontend i backend używa tych samych templatek i w panelu po stronie zamówień wszystkie te operacje występują również.
Rozwiązaniem byłoby może rozróżnianie czy tempatka jest wyświetlana we frontendzie czy w panelu w backendzie, ale czy jest to możliwe??
Proszę o jakieś podpowiedzi
Żeby usystematyzować w moim sklepie procesy zachodzą następująco:
1. przed ostatecznym potwierdzeniem zakupów z poziomu templatki iso_checkout_order_review przypisuje sobie zmienne do sesji
$_SESSION['CLIENT_DATA'] = $_SESSION['CHECKOUT_DATA'];tak abym miał później dostęp do danych klienta dokonującego zakupy
oraz już z tąd mogę przypisać kwotę do zmiennej sesji:
$_SESSION['KWOTA'] = $this->grandTotalPrice;pozwalającą mi na operacje na sumie zamówienia w późniejszym etapie (która z tego poziomu jest przypisana właśnie jako grandotalprice a nie jak w następnym kroku grandtotal - tu był mój pierwszy błąd)
dzięki temu mam dane użytkownika dokonującego zakupów oraz z zmiennej przypisaną kwotę którą spokojnie odczytam w dołączonym pliku
Do pełni szczęści brakuje mi tylko jeszcze zapisania do sesji zmiennej numeru zamówienia - order_id, ponieważ z tego poziomu ona nie istnieje!!
Numer zamówienia pojawia się dopiero w następnym kroku czyli po potwierdzeniu zamówienia z poziomu mod_iso_orderdetails i dlatego nie mam do niego dostępu w pierwszym kroku. Dlatego też pojawił się problem z tym odświeżaniem ręcznym o którym pisałem w poprzednim poście.
Jakie rozwiązanie? Nie wiem - ponieważ muszę z poziomu jednej strony - mod_iso_orderdetails (bez odświeżania jej) przypisać zmienną order_id coby była widoczna w dołączanym pliku.
W tym momencie na stałe do templatki dopinam plik php więc dostęp do zmiennych mam od ręki, ale rozwiązanie takie nie jest dobre ponieważ jak pisałem wyżej frontend i backend używa tych samych templatek i w panelu po stronie zamówień wszystkie te operacje występują również.
Rozwiązaniem byłoby może rozróżnianie czy tempatka jest wyświetlana we frontendzie czy w panelu w backendzie, ale czy jest to możliwe??
Proszę o jakieś podpowiedzi
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych użytkowników