Magento 1.6-在添加到购物车期间检索客户输入的自定义选项(CartController.php/addActi


Magento 1.6 - Retrieving customer inputted custom options during add to cart (CartController.php/addAction)

对addAction函数使用CartController.php覆盖。

基本上,我试图接受用户输入的自定义选项,然后根据这些选项生成一个新产品,并将其添加到购物车中。我已经放下了第一部分,如果一个产品没有标记自定义属性,它会像正常一样添加。。。但如果它被标记,它会创建一个新产品,并将其添加到购物车中。

我成功地生成了新产品并将其添加到购物车中,但我无法获得客户输入的自定义选项。

$defaultprod = $product->getDefaultprod();
$prodID = $product->getId();
$prodOpt = Mage::getModel("catalog/product")->load($prodID);
if (!$defaultprod == 1) {
$cart->addProduct($product, $params);
if (!empty($related)) {
    $cart->addProductsByIds(explode(',', $related));
}
$cart->save();
}
else
{
          // code to create/add new product here, adding new product + adding to cart functioning, but CANNOT retrieve customer's custom attribute input
}

有什么建议吗?

这就是我刚刚成功尝试的:

  • 避免将原始产品添加到购物车
  • 检索最初发布在添加到购物车上的自定义选项

1)创建一个观察者

这观察到事件controller_action_predispatch_checkout_cart_add

<controller_action_predispatch_checkout_cart_add>
    <observers>
        <myobserver_identification>
            <class>module/observer</class>
            <method>myCustomMethod</method>
        </myobserver_identification>
    </observers>
</controller_action_predispatch_checkout_cart_add>

2)将其添加到MyNamespace_Module_Model_Observer

public function myCustomMethod() {
    $request = Mage::app()->getFrontController()->getRequest();
    /**
     * Avoid adding original product
     */
    $request->setParam('product', (bool) false);
    /**
     * Retrieve custom options posted on add to cart
     */
    $customOptions = $request->getParam('options');
}