Hallo,
ich bastele mir gerade ein Modul mit welchem ich unter anderem Artikel
in den Warenkorb legen möchte.
Dazu benutze ich folgenden Code:
$sess = oxSession::getInstance();
$basket = $sess->getBasket();
$persParam = array("bla"=>1);
$aid = '3f08e9c13cf6b63cf3b599b28acaeb45';
$qty = '1';
$oBasketItem = $basket->addToBasket($aid,$qty,null,$persParam);
Leider ist bei einem Aufruf des Warenkorbs kein Artikel im Warenkorb vorhanden.
Wenn ich nach der letzten Zeile aber mir nochmal anzeigen lasse was im Warenkorb ist, sehe ich meinen Artikel im basket Object.
$basket = $sess->getBasket();
echo "<pre>";
print_r($basket);
echo "</pre>"; exit;
Also scheint er das wohl nicht richtig in die session zu übernehmen … oder woran liegt das?
Was mache ich falsch wenn ich wie oben beschrieben einen Artikel in den Warenkorb legen möchte?
Danke für die Antworten :o
Wo genau führst du dieses Script denn aus? Eventuell hilft ein $sess->freeze() um den basket zu in die session zu speichern - denn das passiert nur in einer View automatisch.
[QUOTE=aggrosoft;117395]Wo genau führst du dieses Script denn aus? Eventuell hilft ein $sess->freeze() um den basket zu in die session zu speichern - denn das passiert nur in einer View automatisch.[/QUOTE]
Hey, danke. das wars!
Ja ich erbe von der class Start…
... extends Start{
}
mit
$sess = oxSession::getInstance();
$basket = $sess->getBasket();
$persParam = array("bla"=>1);
$aid = '3f08e9c13cf6b63cf3b599b28acaeb45';
$qty = '3';
$oBasketItem = $basket->addToBasket($aid,$qty);
$sess->freeze();
klappt es. Vielen Dank!!
leider klappt die beschriebene Lösung nur für einen Artikel.
Versuche ich das in einer Schleife wird nur der erste Artikel dauerhaft im Warenkorb gespeichert.
Woran kann das liegen?
foreach($this->_result as $article) {
if($article['qty'] > 0 && $article['oxid'] != '') {
$sess = oxSession::getInstance();
$basket = $sess->getBasket();
$oBasketItem = $basket->addToBasket($article['oxid'],$article['qty']);
$sess->freeze();
}
}
in $this->_result steht:
Array
(
[meadow] => Array
(
[oxid] => 849fb54dd3a9dd488f09cd1e6a167ac9
[qty] => 2
)
[fence_pole] => Array
(
[oxid] => 0752e7e24e30c23bab7f99a3e9f909bc
[qty] => 3
)
)
edit:
Habe die Lösung selbst gefunden.
Nur das adden sollte in die Schleife rein, dann klappt es reibungslos.
$sess = oxSession::getInstance();
$basket = $sess->getBasket();
foreach($this->_result as $article) {
if($article['qty'] > 0 && $article['oxid'] != '') {
$oBasketItem = $basket->addToBasket($article['oxid'],$article['qty']);
}
}
$sess->freeze();