Thêm sản phẩm vào giỏ hàng với tùy chọn tùy chỉnh bằng PHP


7

Tôi đang cố gắng thêm một sản phẩm vào giỏ hàng theo chương trình với một số tùy chọn tùy chỉnh. Mục này được thêm vào giỏ hàng một cách chính xác nhưng không có tùy chọn nào được thêm vào. Mã của tôi là:

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();

Tôi đã kiểm tra hai lần và các giá trị tùy chọn là chính xác. Tôi đang sử dụng magento ce-1.9.0.0

Câu trả lời:


1

Tạo báo giá có thể giúp thay vì sử dụng Mô hình Thanh toán / Giỏ hàng.

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

đặt sản phẩm của bạn $paramsở đây.

buộc các Varien_Objecttham số của bạn đểaddProduct

$quote->addProduct($product, new Varien_Object($params));
$quote->save();

Cảm ơn, tôi vừa thử các cách sau: paste.ofcode.org/vf7uSudXxStYDaMZjHKPxk và điều đó vẫn chỉ thêm sản phẩm mà không có tùy chọn, tôi có làm gì sai không?
lẻ_duck

0

Tôi nghĩ rằng mảng tùy chọn của bạn có một số định dạng không chính xác. Tôi nghĩ rằng các mảng nên có định dạng sau.

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

Trong đó khóa là id tùy chọn và giá trị là giá trị tùy chọn.

Thay thế cho điều này sẽ là làm việc trực tiếp với mục trích dẫn và trích dẫn và sử dụng chức năng addOptioncho mục báo giá.


0

Nó sẽ không hoạt động như thế này.

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

ở vị trí 123456, bạn phải đặt số thứ tự cho id của tùy chọn tùy chỉnh đó. ví dụ: nếu id là 'Options_2 lòng' thì hãy vượt qua '2' theo '123456'. Để giải phóng mặt bằng nhiều hơn, hãy sử dụng mã này trên trang 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>';    
        }
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.