虽然我知道我可以加载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对象并使用一些本机方式将其选项添加到此加载的对象。
答案 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();