Sprachwechsel oder Artikel in Warenkorb führen zu Shop Offline

Guten Tag liebe Oxid Community, ich arbeite noch einem meinem IHK Projekt ( Oxid Modul für das Kundenkonto) und stecke da leider wieder etwas fest, zu meinem Problem:

Ich rufe über den Menü Punkt Mein Konto ein Template namens Bestellhistorie auf in dem Funktioniert auch alles Wunderbar mann kann dort die Sprache wechseln und Waren nochmals Kaufen über ein Button der den Artikel in den Warenkorb Packt ohne mich weiter zu leiten zum Warenkorb. Wenn ich auf Details drücke gelange ich auf ein neues Template Detailansicht, in diesem habe ich über ein get Formular die Details der einzelnen Bestellung aufgelistet, wenn mann von dort auf den Warenkorb Button drückt wird der Artikel hinzugefügt ich werde aber gleichzeitig auf die shop offline Seite geschickt, wenn ich zurück gehe ist der Artikel zwar im Warenkorb aber diese weise ist nicht gerade schön, das selbe passiert auch wenn ich auf der Detail Seite die Sprache ändern will.

etwas genauer: Ich übergebe die OXID in die Detailansicht über das get Formular , anscheinend aber nicht die Lang ID die wird mir in der URL nicht mehr angezeigt, mir ist nach einigem durchstöbern immer noch nicht klar wo udn wie die Lang Id nun mitgegeben wird ?

Ich denke mal das wird auch mein Fehler sein warum ich dann statt auf der Seite zu verweilen auf Shop offline geschickt werde.

Hat jemand einen kleinen anstups für mich ? Danke schonmal :slight_smile:

Schau mal in die Log-Datei. log/EXCEPTION_LOG.txt

in der Log Datei steht leider nichts hatte da schon mal geschaut, mir wird dort kein Fehler angezeigt.

Ohne Quelltext ist das natürlich schwierig. Zur LangID: Schau Dir oxcmp_lang und selected an.

Ok ich glaube ich habe meinen Fehler gefunden, wenn ich etwas in den Warenkorb lege bzw die Sprache verändere dann gibt es ein Refresh der Seite und die Oxid die ich per get ausgelesen habe verschwindet somit auch aus der URL dadurch gibt es dann wohl die Shop offline anzeige, dann probier ich mal die Oxid zu speichern in der URL.

update: ich habe es jetzt immer noch nicht geschafft die Oxid in der URL zu speichern ohne sie nach einem Refresh zu verlieren, hätte jemand einen Lösungsansatz für mich wie ich es schaffen kann die OXID nachdem sie im get Formular ausgelesen wurde in der Url zu speichern? Danke :slight_smile:

[{deinlink|oxaddparams:$oView->getDynUrlParams()}]

ich bin nun sehr verwirrt :frowning_face:
Über dieses Formular gelange ich auf das andere Template der Detailsansicht:

< form action="[{$oViewConf->getSelfLink()|cat:"cl=account_extend_bill_details"}]oxid=$order->oxorder__oxid->value" rel="nofollow" method="get" style="text-align: right">
   < input type="hidden" name="cl" value="account_extend_bill_details">
   < input type="hidden" name="oxid" value="[{$order->oxorder__oxid->value}]">
   < button style="color: grey;border: none;background-color:white;height: 26px;" type="submit">[{oxmultilang ident="ACCOUNT_EXTEND_BILLING_DETAILS"}]
< i style="margin-left: 5px;" class="fas fa-chevron-right fa-sm"></i></button>
< /form>

über das get bekomme ich die Oxid für mein Artikel, und dieses würde ich gerne in der URL behalten, damit wenn ich ein Artikel dem Warenkorb hinzufüge und er die Seite Aktualisiert ich die OXID in der URL nicht verliere und auf eine leere Shop offline Seite komme.

wo kann ich hier den befehl setzen das er die oxid in der url abspeichert ?
sorry & Danke

das ist das Formular auf dem anderen Template mit dem ich den Artikel dem Warenkorb hinzufüge, das hinzufügen klappt nur der Redirect quasi auf der selben Seite zu bleiben nicht:

    < form action="[{$oViewConf->getSelfActionLink()}]cl=account_extend_bill_details|oxid=[{$order->oxorder__oxid->value}]" method="get" class="form-inline">
< input type="hidden" name="cl" value="account_extend_bill_details">
                                    < input type="hidden" name="fnc" value="tobasket_bill_details">
                                    < input type="hidden" name="aproducts[[{$nKey+1}]][aid]" value="[{$oArticle->oxarticles__oxid->value}]">
                                    < input type="hidden" name="aproducts[[{$nKey+1}]][anid]" value="[{$oArticle->oxarticles__oxid->value}]">
                                    < div class="input-group">
                                    < select name="aproducts[[{$nKey+1}]][am]" style="width: 33px; height: 20px; margin-top: 3px; margin-right: 1px; border:1px solid #080;border-radius:.25rem;-moz-appearance: none;margin-left: 5px;">....< /select>

      < button style="margin:3px auto;border:none;background-color:white;width: 25px;height: 20px;" data-toggle="popover" data-trigger="focus" data-content="[{oxmultilang ident="ACCOUNT_EXTEND_BILLING_ADD_TO_CART"}]" data-placement="left" type="submit" class="st_add_to_cart" >< i class="fas fa-shopping-bag fa-lg" style="margin-left: -4px;color: #f18000;"></i>< /button>
                                [{else}]
                                        <div style="color: red;margin-left: 2px">[{oxmultilang ident="ACCOUNT_EXTEND_OUT_OF_ORDER"}]</div>
                                    [{/if}]
                                    [{/block}]
                                    </div>
                                    </form>
<form action="[{$oViewConf->getSelfLink()}]" rel="nofollow" method="get" style="text-align: right">
		<input type="hidden" name="cl" value="account_extend_bill_details">
   		<input type="hidden" name="oxid" value="[{$order->oxorder__oxid->value}]">
   <button style="color: grey;border: none;background-color:white;height: 26px;" type="submit">[{oxmultilang ident="ACCOUNT_EXTEND_BILLING_DETAILS"}]
<i style="margin-left: 5px;" class="fas fa-chevron-right fa-sm"></i></button>
</form>
<form action="[{$oViewConf->getSelfLink()}]" rel="nofollow" method="get" style="text-align: right">
	<input type="hidden" name="cl" value="account_extend_bill_details">
	<input type="hidden" name="oxid" value="[{$oView->getOrderOxid()}]">...

public function getOrderOxid()
{

if ($sOxid = oxRegistry::getConfig()->getRequestParameter(‘oxid’)) {
$sParams .= “{$sOxid}”;
}
return $sParams;
}

Leider wurden obige Antworten nicht in einem Beitrag angenommen (Forbidden):
1 = Erste Form
2 = Zweite Form
3 muss in den Controller, wie oben erwähnt (ähnlich getDynUrlParams())

…Und, mal getestet?

1 Like

Hi, sorry für die späte Antwort,
ja ich habe es probiert, leider ohne erfolg. Um nicht an dieser Aufgabe hängen zu bleiben habe ich dieses Problem erstmal Pausiert gehabt. Und weiter gemacht mit meinem Projekt( so gut wie fertig)

Ich übergebe mittlerweile die OXID nicht mehr über eine Form sondern über einen normalen Link was auch prima funktioniert.

Vielen Dank für die Hilfe :slight_smile:

OK, als Nachtrag kurz ein kleines Beispiel: Die folgenden Formen kannst in contact.tpl einfügen und den Controller contact.php um obige Methode public function getOrderOxid() erweitern. Bei Klick auf den oberen Button wird der der untere mit dem Get-Wert aus oxid (URL: /index.php?cl=contact&oxid=xxx) befüllt, in dem Fall also mit xxx. Mehr steckt nicht dahinter, also senden und empfangen.

<form action="[{$oViewConf->getSelfLink()}]" rel="nofollow" method="get" style="text-align: right">
		<input type="hidden" name="cl" value="contact">
   		<input type="hidden" name="oxid" value="xxx">
   <button style="color: grey;border: none;background-color:white;height: 26px;" type="submit">[{oxmultilang ident="ACCOUNT_EXTEND_BILLING_DETAILS"}]
<i style="margin-left: 5px;" class="fas fa-chevron-right fa-sm"></i></button>
</form>

<form action="[{$oViewConf->getSelfLink()}]" rel="nofollow" method="get" style="text-align: right">
		<input type="hidden" name="cl" value="contact">
   		<input type="hidden" name="oxid" value="[{$oView->getOrderOxid()}]">
   <button style="color: grey;border: none;background-color:white;height: 26px;" type="submit">[{oxmultilang ident="ACCOUNT_EXTEND_BILLING_DETAILS"}]
<i style="margin-left: 5px;" class="fas fa-chevron-right fa-sm"></i></button>
</form>
1 Like