Produkt mit benutzerdefinierter Option über PHP in den Warenkorb legen

7

Ich versuche, ein Produkt programmgesteuert mit einigen benutzerdefinierten Optionen in den Warenkorb zu legen. Der Artikel wird korrekt in den Warenkorb gelegt, aber keine der Optionen wird jemals hinzugefügt. Mein Code lautet:

require_once '../../app/Mage.php';
umask(0);
/* not Mage::run(); */
Mage::app('default');

Mage::getSingleton("core/session", array("name" => "frontend"));

$product_id = 2364;
$id_opt_value = 6072;
$final_opt_value = 6074;

$product = Mage::getModel('catalog/product')->load($product_id);
$cart = Mage::getModel('checkout/cart');
$cart->init();
$params = array(
    'product' => $product_id,
    'qty'     => 1,
    'options' => array(         
        $id_opt_value => '123456',
        $final_opt_value => 'black gloss finish',
     )
);

$cart->addProduct($product, $params);
$cart->save();

Ich habe doppelt geprüft und die Optionswerte sind korrekt. Ich benutze Magento Ce-1.9.0.0

komische Ente
quelle

Antworten:

1

Das Erstellen eines Angebots kann hilfreich sein, anstatt das Kassen- / Warenkorbmodell zu verwenden.

$quote = Mage::getModel('sales/quote')
            ->setStoreId(Mage::app()->getStore('default')->getId());

Stellen Sie $paramshier Ihre Produkte ein.

erzwinge das Varien_Objectmit deinen Parametern aufaddProduct

$quote->addProduct($product, new Varien_Object($params));
$quote->save();
B00MER
quelle
Vielen Dank, ich habe gerade Folgendes versucht: paste.ofcode.org/vf7uSudXxStYDaMZjHKPxk und das fügt das Produkt immer noch ohne Optionen hinzu. Was habe ich daran falsch gemacht?
odd_duck
0

Ich denke, dass Ihr Optionsarray eine falsche Formatierung hat. Ich denke, das Array sollte im folgenden Format sein.

$params = array(
    'product' => $product_id,
    'qty'     => 1,
    'options' => array(
        '123456' => 'black gloss finish',
     )
);

Dabei ist der Schlüssel die Options-ID und der Wert der Optionswert.

Die Alternative dazu wäre, direkt mit dem Angebot und dem Angebotsposten zu arbeiten und die Funktion addOptionfür das Angebotsposten zu verwenden.

David Manners
quelle
0

So wird es nicht funktionieren.

$params = array(
    'product' => $product_id,
    'qty'     => 1,
    'options' => array(
        '123456' => 'black gloss finish',
     )
);

Anstelle von 123456 müssen Sie die numerische Nummer für die ID dieser benutzerdefinierten Option eingeben. Wenn die ID beispielsweise 'options_2_text' lautet, übergeben Sie '2' anstelle von '123456'. Für mehr Freigabe verwenden Sie diesen Code auf der Seite cart.html:

foreach($this->getItems() as $product) {
    $options = $product->getProduct()->getTypeInstance(true)->getOrderOptions($product->getProduct());
    if ($options)
    {
        if (isset($options['options']))
        {
            $result = $options['options'];
            echo '<pre>';
                print_r($result);
            echo '</pre>';    
        }
    }
}
alok
quelle