получить идентификатор продукта корзины в обозревателе

Я установил наблюдателя для sales_quote_add_item, чтобы очищать корзину всякий раз, когда будет добавлен определенный продукт (его предполагается заказывать только отдельно). Я просто не знаю, как получить идентификатор продукта, который будет добавлен. Путем проб и ошибок я пришел к следующему:

    $tmp = $observer->getEvent()->getQuoteItem()->getData();
    echo $tmp['product_id'];

Что кажется довольно уродливым решением. Я уверен, что для этого есть ярлык или правильная функция, есть идеи?


person Christoffer Bubach    schedule 28.01.2013    source источник


Ответы (2)


Ваше решение достаточно хорошее

$productId = $observer->getEvent()->getQuoteItem()->getProductId();

Вы можете загрузить продукт после, если это необходимо

$product = Mage::getModel('catalog/product')->load($productId);
person freento    schedule 28.01.2013
comment
Хех, думал, что пробовал - но, может быть, только getId(). Во всяком случае, сработало нормально и выглядит намного лучше, чем доступ к массиву, как я. Спасибо! - person Christoffer Bubach; 28.01.2013

Используйте следующий код, чтобы получить идентификатор продукта данных элемента котировки

$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) 
{
   $productId = $item->getProduct()->getId();
}

Надеюсь, это поможет вам.

person magento code    schedule 28.01.2013
comment
Это для всех идентификаторов корзины, верно? Я пытаюсь получить идентификатор товара, который еще не добавлен, этот наблюдатель срабатывает до того, как он будет добавлен в корзину. - person Christoffer Bubach; 28.01.2013