Magento引用项目对象 - 如何加载项目的选项?

时间:2014-01-29 18:13:45

标签: php magento

虽然我知道我可以加载Quote Item Options集合并按item_id过滤它,但我无法理解Magento人员没有添加任何_afterLoad_loadOptions方法轻松地将选项分配给项目,因为已经有_options_optionsByCode属性......

提供我正在做的事情的一些例子:

// updated (forgot to actually load object
$item = Mage::getModel('sales/quote_item')->load($itemId);
$buyRequest = $item->getBuyRequest(); // almost empty, only qty is set

我想知道是否有一些$item->loadOptions()方法...或其他本地方式将选项加载到项目中

更新

我想做什么:我想加载item对象并使用一些本机方式将其选项添加到此加载的对象。

4 个答案:

答案 0 :(得分:8)

我最终使用了下一段代码

/** @var Mage_Sales_Model_Resource_Quote_Item_Option_Collection $options */
$options = Mage::getResourceModel('sales/quote_item_option_collection');
$options->addItemFilter($item->getId());
foreach ($options as $option) {
    $item->addOption($option);
}

虽然我知道它没有直接回答我的问题,但我认为在报价项目中没有加载选项的方法。 所以也许有人会发现上面的代码很有用。

答案 1 :(得分:2)

让我分享一下我可以为我的案例做些什么来获取购物车项目选项,这是我的一段代码:

foreach ($item->getOptions() as $option) {
    if ($option->getCode() == 'info_buyRequest') {
        $values = unserialize($option->getValue()); // to array object
        // lookup custom option
        if ($values && array_key_exists('options', $values)) { 
            //
        }       
    }
}

如上面的代码,我获得了购物车/报价项目和查找的所有选项,以找到 info_buyRequest 的代码,该代码存储商品的购买选项。我的情况是,我试图寻找购买产品的自定义选项。

注意:您可以通过以下方式检查项目数组数据:$ item-> getData(),以便我们了解数据输出的结构。

答案 2 :(得分:0)

现在你实例化一个没有任何数据的新报价项目对象。如果要加载实际报价项,可以使用函数getOptions检索与报价项关联的所有选项。

你想要做的是什么?

答案 3 :(得分:0)

在我的情况下,我在观察者的报价项中添加了其他选项。这些选项不会保存在后端的产品中,因为它们是动态创建的。

在购物车中,您只需使用:

$quoteItem = someMethodToGetYourQuoteItem();
$quoteItem->getBuyRequest()->getYouroption();