2015-04-08 2 views
0

Я пытаюсь перечислить все товары в корзине и указать выбранный цвет/размер и т. Д., Которые у них есть. На главном веб-сайте Magento, похоже, делает это, как показано на рисунке ниже. Однако, когда я пытаюсь сделать это программно, я получаю пользовательские атрибуты как null.В Magento, как я могу заставить getAllVisibleItems() возвращать выбранные значения атрибутов настраиваемых продуктов, которые он возвращает в корзине?

Это мой текущий код:

$quote->getAllVisibleItems(); 

    foreach ($allCartItems as $item) { 

     $productInfo = array(); 
     $product = $item->getProduct(); 
     $productInfo["size"] = $product->getSize(); 
     ... 
    } 

Если я использую getAllItems() вместо getAllVisibleItems(), то я закончу с простыми/конфигурируемых продуктов, которые будут вызывать вопрос о том, какой идентификатор элемента приложение должно использование при обновлении продукта (а также перечисление дублирующих элементов).

Единственное решение, которое я нашел в Интернете, это загрузить продукт снова, используя $product = $model->load($model->getIdBySku($sku)); для каждого перечисленного продукта, но это похоже на то, что он будет довольно работоспособным!

Как я могу вернуть getAllVisibleItems() выбранные атрибуты и значения атрибутов настраиваемых продуктов, которые он возвращает?

enter image description here

[ 
    { 
    name: "Tori Tank", 
    price: "60.0000", 
    id: "418", 
    product_id: "418", 
    item_id: "2481", 
    sku: "wbk004", 
    color: null, 
    size: null, 
    quantity: 1 
    }, 
    { 
    name: "Chelsea Tee", 
    price: "75.0000", 
    id: "410", 
    product_id: "410", 
    item_id: "2483", 
    sku: "mtk005", 
    color: null, 
    size: null, 
    quantity: 1 
    } 
] 

Как вы можете видеть, цвет/размер, возвращается нулевой.

+0

дубликат на magento.stackexchange http://magento.stackexchange.com/questions/63074/how-can-i-have-the-getallvisibleitems-return- the-chosen-attributes-and -attri – zhartaunik

ответ

0

Быстрое решение:

$item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct()); 

Объяснение:

У вас есть проблема, потому что при запуске $item->getProduct(); вы просто получить этот конфигурируемый продукт. Его то же самое, если вы запустите Mage::getModel('catalog/product')->load($someConfigurableProductId)