使用CartController.php覆盖addAction函数。
基本上我正在尝试使用用户输入的自定义选项,然后根据这些选项生成新产品,并将其添加到购物车中。我有第一部分,如果产品没有标记的自定义属性,它会像平常一样添加...但如果它被标记,它会创建一个新产品并将其添加到购物车。
我已成功生成新产品并将其添加到购物车,但我无法获得客户输入的自定义选项。
$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
}
有什么建议吗?
答案 0 :(得分: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');
}