Mage :: init('default')在Module中导致错误

时间:2014-11-20 14:51:11

标签: php magento

我在Magento外部运行测试php脚本,将一个项目添加到购物车。效果很好。此代码在此处找到并在很多帖子中被许多人使用。当我将此代码放入现有模块时,不会从新会话中添加该项。如果我去商店并添加常规产品(我的购物车中有商品),模块将正确添加商品。我知道添加项目的代码有效。我遇到的问题是创建购物车的第一个实例。

如果我的购物车中已有正常的magento产品,则此代码可以正常工作:

            // this section of code only works if the customer already has a cart item added (cart established)
            // for some reason this script fails when no cart exists

            $session = Mage::getSingleton('customer/session'); 
            // Get cart instance
            $cart = Mage::getSingleton('checkout/cart'); 
            $cart->init();
            $productId=971;             
            $productInstance = Mage::getModel('catalog/product')->load($productId);
            $param = array(
                'product' => $productId,
                'qty' => $rfqdata['option_quantity'],
                'options' => array(
                    27 => $rfqdata['option_layers'],        // Layers
                    26 => $rfqdata['option_thickness'],     // Thickness
                    25 => $rfqdata['option_length'],        // Length
                    24 => $rfqdata['option_width'],         // Width
                    23 => $rfqdata['option_color'],         // Color
                    22 => $rfqdata['option_finish'],        // Finish
                    29 => $rfqdata['option_rush'],          // Rush
                    30 => 'tbd'                             // RFQ Number
                )
            );
            $request = new Varien_Object();
            $request->setData($param);
            $cart->addProduct($productInstance, $param);
            $session->setCartWasUpdated(true);
            $cart->save(); 

这会以某种方式导致错误,并且模块addtocart操作未完成。我找不到任何有用的错误消息。我已经在堆栈,谷歌搜索了100个页面,我找不到解决此问题的任何内容。显然,如果它不能从页面加载1开始工作,那么我的模块就毫无价值。

我之前试图发布此内容并且没有得到回复。我真的需要一些帮助。如果你不能回答,你能告诉我在哪里可以找到付费的Magento支持吗?

1 个答案:

答案 0 :(得分:0)

这是解决方案,也很难找到......

if(empty($quote)){
    $checkout = Mage::getSingleton('checkout/session');
    $quote = $checkout->getQuote();
    $session = Mage::getSingleton('customer/session');
    if($session->isLoggedIn()) {
        // look up customer
        $customerSession = $session->getCustomer();
        $customer = Mage::getModel('customer/customer')->load($customerSession->getId());
        $quote->assignCustomer($customer);
        $quote->setIsMultiShipping(false);
    }
    $quote->save();
}