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ęte przez kylu123, Oct 26 2011 14:57
#1
Napisany 26 October 2011 - 14:57

#3
Napisany 26 October 2011 - 16:51

a nie ma jakiegoś prostego sposobu sięgnięcia do tych danych?
Poprosił bym o coś w języku polskim, żebym zrozumiał
Poprosił bym o coś w języku polskim, żebym zrozumiał

#4
Napisany 28 October 2011 - 09:47

Nikt nie podpowie?
Przyznaje że z programowaniem jestem na bakier, orientuję się w podstawach jedynie.
Pomocy pliss
Przyznaje że z programowaniem jestem na bakier, orientuję się w podstawach jedynie.
Pomocy pliss

#5
Napisany 28 October 2011 - 10:22

Kolejny mój strzał to dodanie poniższego kodu zaraz na początku funkcji compile() w ModuleIsotopeCheckout.php:
$this->Template->setData($this->getCheckoutInfo());Wtedy powinieneś w templatce mieć dostęp do danych poprzez $this->jakas_dana.
Codefog - Contao web development
#6
Napisany 01 November 2011 - 00:01

Dzięki Kamil za podpowiedzi, niestety nie działa 
Dodanie linijki kodu w compile powoduje że krok wcześniej czyli w order review znikają mi dane dotyczące osoby zamawiającej (billing details). Potem zmienne też nie są wpisywane

Dodanie linijki kodu w compile powoduje że krok wcześniej czyli w order review znikają mi dane dotyczące osoby zamawiającej (billing details). Potem zmienne też nie są wpisywane

#7
Napisany 02 November 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
Napisany 03 November 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
Napisany 11 November 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
Napisany 11 November 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
#12
Napisany 14 November 2011 - 21:21

Kamilu, działa 
Wielka dzięka - ostatnia operacja i strzał w 10
Wielka dzięka
Pozdrawiam

Wielka dzięka - ostatnia operacja i strzał w 10

Wielka dzięka
Pozdrawiam
#13
Napisany 14 November 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
#15
Napisany 15 November 2011 - 11:15

aaa jasne
dzięka. Pójdę tą drogą
Pozdrawiam
dzięka. Pójdę tą drogą
Pozdrawiam
#16
Napisany 15 November 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
Napisany 19 November 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
#19
Napisany 19 November 2011 - 21:28

I to mi się podoba 
Wielkie dzięki, działa jak trzeba
Pozdrawiam

Wielkie dzięki, działa jak trzeba

Pozdrawiam
0 użytkowników czyta ten temat
0 użytkowników, 0 gości, 0 anonimowych użytkowników