gpt4 book ai didi

events - 触发事件时为 "Mage registry key already exists"

转载 作者:行者123 更新时间:2023-12-04 16:38:11 24 4
gpt4 key购买 nike

我目前正在尝试挂接到“sales_order_save_after”事件,但是当该事件被触发时我不断收到以下错误:

Mage registry key "_singleton/Modulename/Orderobserver" already exists

现在我检查了 Orderobserver 类的命名是否正确,并且与 xml 中对该类的调用相匹配,但错误仍然存​​在。调用事件的 xml 如下所示:

<events>
<sales_order_save_after>
<observers>
<modulename>
<type>singleton</type>
<class>Modulename/Orderobserver</class>
<method>generateOrderFile</method>
</modulename>
</observers>
</sales_order_save_after>
</events>

该类名为 Companyname_Modulename_Model_Modulename_Orderobserver

类文件的命名和位置如下:app/code/local/Companyname/Modulename/Model/Modulename/Orderobserver.php

有趣的是,发生错误时,服务器日志中还会记录以下错误:

client denied by server configuration: 
/var/www/vhosts/path/to/subdomain/httpdocs/app/etc/local.xml

这可能是权限问题吗?

更新:

我查看了 Magento 系统日志,还记录了以下错误:

Failed opening 'Mage/Retailpro/Model/Orderobserver.php' for inclusion (include_path='/var/www/path/to/subdomain/httpdocs/app/code/local:/var/www/path/to/subdomain/httpdocs/app/code/community:/var/www/path/to/subdomain/httpdocs/app/code/core:/var/www/path/to/subdomain/httpdocs/lib:.:')  in /var/www/path/to/subdomain/httpdocs/lib/Varien/Autoload.php on line 93

最佳答案

首先,虽然它可能不是必须的,但改变它

<class>Modulename/Orderobserver</class>

<class>modulename/orderobserver</class>

类别名的约定是它们都是小写的。

其次,类别名modulename/orderobserver 翻译成一个类名

Packagename_Modulename_Model_Orderobserver

所以你给你的类文件命名错了。最后,由于 Magento 的自动加载器是基于类名的,这意味着您的文件需要位于

app/code/local/Packagename/Modulename/Model/Orderobserver.php

关于events - 触发事件时为 "Mage registry key already exists",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6816058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com