0

对 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
}

有什么建议吗?

4

1 回答 1

0

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

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

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');
}
于 2012-08-27T21:46:45.800 回答