更新Magento 1.6.2的购物车中已经存在的可配置产品的选项


Updating the options of configurable product that is already in the cart of Magento 1.6.2

有人能告诉我如何更新Magento购物车中已经存在的可配置产品的选项(使用下拉选择)吗。

我将代码放在以下文件中,以显示可配置产品的超级属性选项(使用下拉列表):magento'app'design'frontend'default'theme-name'template'checkout'cart'item'default.phtml

我发现一行代码是:

<?php if ($_options = $this->getOptionList()):?>

在那之后,我放了我的代码来显示可配置产品的属性下拉列表,它运行良好,但当我从超级属性下拉列表中选择另一个选项时,我需要更新该产品的超级属性选项值。下面是我显示下拉列表的代码:

<?php
if($this->getProduct()->isConfigurable()){
    $_product = Mage::getModel('catalog/product')->load($this->getProduct()->getId());
    Mage::getBlockSingleton('catalog/product_view_type_configurable')->unsetData();
    $_configurable = Mage::getBlockSingleton('catalog/product_view_type_configurable')->setData('product', $_product);
    $_cdata = json_decode($_configurable->getJsonConfig());
    $_current = array();
    foreach((array)$this->getOptionList() as $_option) {
        $_current[$_option['label']]=$_option['value'];
    }
    foreach($_cdata->attributes as $attribute) {
        ?>
        <strong><?php echo $attribute->label;
        $catchlabel = $attribute->label;
        if($catchlabel == 'Clipboard Color'):
            $SelectOptions = "selectAtt";
        else:
            $SelectOptions = "selectFont";
        endif;
        ?>
        </strong>
        <select style="width: 150px;"
name="cart[<?php echo $_item->getId() ?>][option][<?php echo $attribute->id ?>]"
id="<?php  echo $_item->getId(); ?>_<?php echo $attribute->id;  ?>"
class="<?php echo $SelectOptions; ?>">
            <?php
            foreach($attribute->options as $option) {
                ?>
                <option
                <?php echo ($_current[$attribute->label]==$option->label) ? ' selected' : '' ?>
                    value="<?php echo $option->id ?>">
                    <?php echo $option->label ?>
                </option>
                <?php
            }
            ?>
        </select> 
        <script type="text/javascript">
            jQuery('#<?php  echo $_item->getId(); ?>_<?php echo $attribute->id;  ?>').change(function() {
                var getOption = jQuery('#<?php  echo $_item->getId(); ?>_<?php echo $attribute->id;  ?>').val();
                // something to do here for update attibute options for current product
                alert(getOption);
            });
        </script> <?php
    }
}
?>

请告诉我如何更新所选可配置产品的超级属性选项。

您需要将新的配置信息提交给处理更新的控制器操作。

Magento没有这样的控制器操作,但是,当你编辑购物车中的单个可配置产品时,你会得到带有稍微不同标记的产品视图。该页面中的表单用于编辑购物车中的产品,而不是添加新产品。

您应该检查控制器操作中的算法,并创建一个带有控制器的模块,该控制器将该算法应用于购物车中的每个产品