Skocz do zawarto艣ci

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!
Zdj臋cie

isotope - przenoszenie danych z formularza


  • Prosz臋 si臋 zalogowa膰 aby odpowiedzie膰
18 odpowiedzi na ten temat

#1
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
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
  • 0

#2
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1538 post贸w
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
W pliku ModuleIsotopeCheckout.php masz tak膮 metod臋:

$arrInfo = $this->getCheckoutInfo();
print_r($arrInfo);
Wprwadzie nie wiem co ona zwraca i czy ci jakkolwiek pomo偶e, ale zawsze to jaki艣 trop :P
  • 0

Codefog - Contao web development


#3
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
a nie ma jakiego艣 prostego sposobu si臋gni臋cia do tych danych?

Poprosi艂 bym o co艣 w j臋zyku polskim, 偶ebym zrozumia艂 ;)
  • 0

#4
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
Nikt nie podpowie?
Przyznaje 偶e z programowaniem jestem na bakier, orientuj臋 si臋 w podstawach jedynie.

Pomocy pliss :)
  • 0

#5
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1538 post贸w
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
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.
  • 0

Codefog - Contao web development


#6
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
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 :(
  • 0

#7
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
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 :
<?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
  • 0

#8
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1538 post贸w
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
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(); ?>

  • 0

Codefog - Contao web development


#9
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1538 post贸w
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
A mo偶e przez sesj臋 da si臋 odczyta膰 te dane?

print_r($_SESSION['CHECKOUT_DATA']);
echo 'Hey ' . $_SESSION['CHECKOUT_DATA']['billing_address']['firstname'];

  • 0

Codefog - Contao web development


#10
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
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
  • 0

#11
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1538 post贸w
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
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'] . '!';

  • 0

Codefog - Contao web development


#12
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
Kamilu, dzia艂a :)
Wielka dzi臋ka - ostatnia operacja i strza艂 w 10 :)

Wielka dzi臋ka
Pozdrawiam
  • 0

#13
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
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
  • 0

#14
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1538 post贸w
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
A czy w templatce nie mo偶esz sobie przypisa膰 tych danych do sesji?

$_SESSION['SKLEP_ABC'] = $this->price;
Nie wiem czy akurat price istnieje, ale to tylko tak do zobrazowania.
  • 0

Codefog - Contao web development


#15
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
aaa jasne
dzi臋ka. Pójd臋 t膮 drog膮
Pozdrawiam
  • 0

#16
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
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
  • 0

#17
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
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
$_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
  • 0

#18
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1538 post贸w
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
Aby rozró偶ni膰, czy jest to tryb front end czy back end, wystarczy taki kawa艂ek kodu:

<?php if (TL_MODE == 'FE'): ?>
front end
<?php elseif (TL_MODE == 'BE'): ?>
back end
<?php endif; ?>

  • 0

Codefog - Contao web development


#19
kylu123

kylu123

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 203 post贸w
I to mi si臋 podoba :)

Wielkie dzi臋ki, dzia艂a jak trzeba :)

Pozdrawiam
  • 0




0 u偶ytkownik贸w czyta ten temat

0 u偶ytkownik贸w, 0 go艣ci, 0 anonimowych u偶ytkownik贸w