首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在尝试订购/取消有多个项目的订单时发生Magento错误

在尝试订购/取消有多个项目的订单时发生Magento错误
EN

Stack Overflow用户
提问于 2014-12-13 14:39:33
回答 2查看 1.1K关注 0票数 0

为什么?

在Magento结帐后,我收到了以下电子邮件错误消息.付款交易失败。原因是Mage注册表项“_singleton/model/观测者”已经存在签出类型.

在管理页面上,当尝试删除这个oreder时,同样的错误,同样是:

代码语言:javascript
复制
There has been an error processing your request

Mage registry key "_singleton/model/observer" already exists

Trace:
#0 /app/Mage.php(223): Mage::throwException('Mage registry k...')
#1 /app/Mage.php(478): Mage::register('_singleton/mode...', false)
#2 /app/code/core/Mage/Core/Model/App.php(1316): Mage::getSingleton('model/observer')
#3 /app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('cataloginventor...', Array)
#4 /app/code/core/Mage/Core/Model/Abstract.php(466): Mage::dispatchEvent('cataloginventor...', Array)
#5 /app/code/core/Mage/CatalogInventory/Model/Stock/Item.php(787): Mage_Core_Model_Abstract->_afterSave()
#6 /app/code/core/Mage/Core/Model/Abstract.php(319): Mage_CatalogInventory_Model_Stock_Item->_afterSave()
#7 l/app/code/core/Mage/CatalogInventory/Model/Stock.php(210): Mage_Core_Model_Abstract->save()
#8 /app/code/core/Mage/CatalogInventory/Model/Observer.php(809): Mage_CatalogInventory_Model_Stock->backItemQty('542', 1)
#9 /app/code/core/Mage/Core/Model/App.php(1338): Mage_CatalogInventory_Model_Observer->cancelOrderItem(Object(Varien_Event_Observer))
#10 /app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Mage_CatalogInventory_Model_Observer), 'cancelOrderItem', Object(Varien_Event_Observer))
#11 /app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('sales_order_ite...', Array)

..and等

这种情况只发生在有多个项目的订单上。

任何帮助都将受到感谢,特别是因为该网站现在正在生产。

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-13 19:16:50

让我在阿兰的回答中加上一点马根托的“解剖”:

从错误日志中:

代码语言:javascript
复制
#10 /app/code/core/Mage/Core/Model/App.php(1317): `Mage_Core_Model_App->_callObserverMethod(Object(Mage_CatalogInventory_Model_Observer), 'cancelOrderItem', Object(Varien_Event_Observer))

班级: Mage_CatalogInventory_Model_Observer

模式:编目清单/观察员

方法: cancelOrderItem

这意味着#2应该是:

代码语言:javascript
复制
#2 /app/code/core/Mage/Core/Model/App.php(1316): Mage::getSingleton('cataloginventory/observer')

但你有:

代码语言:javascript
复制
#2 /app/code/core/Mage/Core/Model/App.php(1316): Mage::getSingleton('model/observer')

为什么它失败了:

1)当Magento尝试执行Mage::getSingleton(“模型/观察者”)时,它将从getSingleton()函数中调用。

2)注册表没有“_singleton/model/观察者”,因此它试图注册它:

代码语言:javascript
复制
self::register($registryKey, self::getModel($modelClass, $arguments));

3)它调用self::getModel(‘model /观察者’,array())进行注册,这个方法失败了,因为您没有这样的模型。

同样,在xml配置文件中有“模型/观察者”模型,但是Magento无法找到该模型的物理文件。

该怎么办呢?这是在'sales_order_item_cancel‘事件上发生的,所以尝试在第三方扩展文件夹中的config.xml文件中找到这个字符串。

如果您在其中一个config.xml中找到如下内容:

代码语言:javascript
复制
...
    <events>
   ...
    <sales_order_item_cancel>
        <observers>
            <inventory>
                <class>model/observer</class>
                <method>cancelOrderItem</method>
            </inventory>
        </observers>
    </sales_order_item_cancel>
    ...
    </events>
...

只需评论<sales_order_item_cancel>部分。如果要使其正常工作,请在<class>model/observer</class>部分中设置正确的值。

票数 1
EN

Stack Overflow用户

发布于 2014-12-13 17:35:51

这是一个奇怪的错误--我猜您正在处理的是/edut文件的“核心黑客”(可能是无意中的)。

如果您查看堆栈跟踪,Magento调用

代码语言:javascript
复制
Mage::getSingleton('model/observer')

这是Magento所说的“实例化model/observer对象,并使其成为单个实例”的方法,如果您不熟悉它们,那么单例就是一个只能实例化一次的“全局”对象。如果再次尝试实例化单个实例,则会得到原始实例。

如果您查看getSingleton的实现

代码语言:javascript
复制
#File: app/Mage.php
public static function getSingleton($modelClass='', array $arguments=array())
{
    $registryKey = '_singleton/'.$modelClass;
    if (!self::registry($registryKey)) {
        self::register($registryKey, self::getModel($modelClass, $arguments));
    }
    return self::registry($registryKey);
}

您可以从堆栈跟踪中看到导致错误的对self::registry的调用。但是,您还可以看到Magento 通过条件检查注册表项,以确保注册表项不存在。

我猜是有人更改了getSingleton的定义,或者是registryregisterapp/Mage.php文件中的定义。在sock Magento系统中,不可能接收到您在这里发布的准确错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27459969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档