【发布时间】:2013-10-11 09:55:42
【问题描述】:
我目前正在尝试通过以下方式将自定义选项添加到添加到购物车的特定订单行:
public function addToPackageQuote()
{
$cart = Mage::getSingleton("checkout/cart");
$quote = Mage::getSingleton("checkout/session")->getQuote();
$packageId = Mage::getModel('MyTuxedo_OPP/Package')->checkPackageId();
$products = $this->sortArray();
foreach ($products as $productInfo) {
try {
$split = explode(",", $productInfo);
$_product = Mage::getModel('catalog/product')->load($split[0]);
if($_product->isConfigurable()) {
$simpleId = $this->getConfigurableSimple($split[1],$split[3],$split[0]);
} else {
$simpleId = $split[0];
}
$product = Mage::getModel('catalog/product')->load($simpleId);
$options = new Varien_Object(array(
"qty" => 1,
"custom_options" => array(
"package" => $packageId,
"packageName" => Mage::helper('MyTuxedo_OPP')->getPackageName()
)
));
$quote->addProduct($product, $options);
$this->_getSession()->setCartWasUpdated(true);
$quote->save();
} catch (Exception $e) {
echo $e->getMessage();
}
$this->addFreeItems();
}
$cart->save();
unset($_SESSION['products']);
unset($_SESSION['productId']);
$cart->save();
// Let's unset all the package sessions (apart from a few that are needed!).
$this->kill();
}
此方法与通用添加到购物车处理程序完全分开,并且纯粹用于包系统中,因此它专门添加简单产品(也分解可配置超级属性以找到简单产品)。
这些简单的产品在 Magento 后端没有附加自定义选项,也不是为产品本身添加自定义选项的目标。我想做的是将自定义选项附加到订单行,然后在购买时将其转移到订单中。在添加到购物车方法中添加的数据非常有效,没有其他地方!
添加到购物车方法按预期工作,只是不包括我尝试附加的自定义选项。我也尝试过简单地定义选项对象:
$options = new Varien_Object(array(
"qty" => 1,
"package" => $packageId,
"packageName" => Mage::helper('MyTuxedo_OPP')->getPackageName()
)
上面的信息,不包括 qty 根本不在 orderline 对象中,我似乎无法从这里继续前进。
目前无休止地在谷歌上搜索,因此非常感谢您的帮助!
我很感激我在此实例化了产品模型对象两次,但计划是让它工作然后优化! :)
【问题讨论】: