【问题标题】:Mage::init('default') causing error in ModuleMage::init('default') 导致模块中的错误
【发布时间】:2014-11-20 14:51:11
【问题描述】:

我在 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 支持吗?

【问题讨论】:

  • 如果它在一个模块中(由 Magento 加载),你为什么要再次使用 Mage::init() 加载 magento ???
  • 我不是,这些是我必须删除才能使其在模块中工作的行。我假设这些行在 magento 之外初始化并启动会话。问题是,如果购物车中没有商品,当模块尝试添加时,“会话”还没有启动/设置?我不知道,这就是为什么我溺水并在这里寻找救生员....
  • 你到底想用代码实现什么?并用您添加到模块中的代码修改您的问题......并且模块也应该在这里......
  • 这是 FME QuickRFQ 的一个调整,它创建一个 RFQ 并将可购买的项目添加到购物车。 3 观察员根据询价页面中的自定义选项更新商品价格。这一切都有效。我现在将尝试修改代码。谢谢
  • 现在当它失败时能够看到异常错误,这非常有帮助......它在一些与 sales_flat_quote_item 相关的 SQL 上失败 - 这又回到了原始问题,在页面加载 1 的模块中,也没有有效的购物车会话可以添加...

标签: php magento


【解决方案1】:

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

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();
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 2020-08-17
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多