我正在侦听sales_quote_save_before事件,以通知何时将商品添加到购物车。一旦触发,我将遍历以下项目选项:
$quote = $observer->getEvent()->getQuote();
foreach ($quote->getAllItems() as $item) {
$options = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
foreach($options['options'] as $option) {
if($option['label'] == 'myOptionA') {
// Here I want to change the selected value for the option
}
}
}
如您所见,一旦到达某个选项(示例中为myOptionA),我想更改所选选项。因此,可以说myOptionA是一个下拉列表,它有4个可能的值。如果选择了值1,我想为该项目设置值4。因此,当购物车完成加载时,myOptionA的值应为4。不仅是它的名字,还有它的价格。我该怎么办?
CMIIW,此循环为您提供可用值,而不是所选值。要获取已设置的实际自定义选项,请解析$ array_sku = explode('-',$ item-> getSku());。显然,第一个是实际产品的SKU $ sku = reset($ array_sku); 尚无解决方案来获取数据。
—
nicolallias
我正在看的关键是能够设置期权价值的价格。最近几天,我一直在关注这一点,但没有发现一种明显的方法来设定价值的价格。似乎报价项目需要删除选项,然后从请求中重建。
—
pspahn 2014年