Magento:以编程方式更新购物车中的项目自定义选项?
我想从购物车中的项目更新自定义选项。我有项目id,因此可以在控制器中加载项目。这就是我被卡住的地方,我可以从购物车中移除物品,并添加一个带有更新选项的新物品,但这不是我想要的 我想直接更新购物车中的现有项目。有什么办法吗Magento:以编程方式更新购物车中的项目自定义选项?,magento,shopping-cart,Magento,Shopping Cart,我想从购物车中的项目更新自定义选项。我有项目id,因此可以在控制器中加载项目。这就是我被卡住的地方,我可以从购物车中移除物品,并添加一个带有更新选项的新物品,但这不是我想要的 我想直接更新购物车中的现有项目。有什么办法吗 谢谢 我在配置产品方面遇到了确切的问题 现在,我知道Magento在“编辑购物车项目”页面上显示可配置的产品选项,选项列表是在不预先选择可配置属性的情况下生成的。该属性由javascript设置,它获取由 <script type="text/javascript"&g
谢谢 我在配置产品方面遇到了确切的问题 现在,我知道Magento在“编辑购物车项目”页面上显示可配置的产品选项,选项列表是在不预先选择可配置属性的情况下生成的。该属性由javascript设置,它获取由
<script type="text/javascript">
var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
</script>
var spConfig=new Product.Config();
但它仅在“编辑购物车项目”页面上显示所选属性。
如果我手动调用它,它不会显示当前属性选择
据我所知,一些签出模块也会在cart Overview中显示选定的属性,因此,可以从Magento获取该数据(但我不确定是直接从DB获取的还是以更友好的方式获取的)。config.xml部分
<events>
<checkout_cart_update_items_after>
<observers>
<update_items_specific_option>
<class>mycompany_checkout/observer</class>
<method>updateItemsSpecificOption</method>
</update_items_specific_option>
</observers>
</checkout_cart_update_items_after>
</events>
mycompany\u结帐/观察员
UpdateItemsSpecification复制
app/code/local/MyCompany/Observer.php部分
<?php
class MyCompany_Checkout_Model_Observer
extends Varien_Event_Observer
{
public function updateItemsSpecificOption($observer)
{
$event = $observer->getEvent();
$cart = $event->getCart();
$data = $event->getInfo();
foreach ($data as $itemId => $itemInfo) {
$item = $cart->getQuote()->getItemById($itemId);
if (!$item) {
continue;
}
$optionData = $this->_getSpecificOptionDataFromItem($item);
if(!$optionData) {
continue;
}
$params = clone $item->getBuyRequest();
$options = $params->getOptions() ? $params->getOptions() : array();
$updateItem = false;
if($shouldIRemoveOption) {
unset($options[$optionData['option_id']]);
$updateItem = true;
} elseif($shouldIAddOption) {
$options[$optionData['option_id']] = array($optionData['value_id']);
$updateItem = true;
}
if($updateItem) {
$params->setOptions($options);
$cart->updateItem($itemId, $params);
}
}
}
protected function _getSpecificOptionDataFromItem($item)
{
foreach($item->getProduct()->getOptions() as $option) {
if($this->_isMyNeededOption($option)) {
foreach($option->getValues() as $valueId => $value) {
if($this->_isMyNeededValue($value)) {
return array(
'option_id' => $option->getId(),
'value_id' => $valueId,
'price' => $value->getPrice()
);
}
}
}
}
return false;
}
}
你能粘贴到目前为止你尝试过的代码吗?