我目前正在尝试连接到"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发布于 2011-07-25 23:18:11
首先,尽管这可能不是必然的,但还是要改变这个
<class>Modulename/Orderobserver</class>至
<class>modulename/orderobserver</class>类别名的惯例是它们都是小写的。
其次,类别名modulename/orderobserver转换为一个类名
Packagename_Modulename_Model_Orderobserver因此,您对类文件的命名是错误的。最后,由于Magento的自动加载器是基于类名的,这意味着您的文件需要位于
app/code/local/Packagename/Modulename/Model/Orderobserver.php发布于 2013-05-11 07:18:41
如果< events >在< global >内,您将收到此错误
将其移至< >< >标记之外的<>或< adminhtml >< event >,以进行修复。
发布于 2013-04-15 16:19:37
<global>
<models>
<newitems>
<class>Microtron_Newitems_Model</class>
<resourceModel>newitems_mysql4</resourceModel>
</newitems>
<newitems_mysql4>
<class>Microtron_Newitems_Model_Mysql4</class>
<entities>
<newitems>
<table>newitems</table>
</newitems>
</entities>
</newitems_mysql4>
</models>
<resources>
<newitems_setup>
<setup>
<module>Microtron_Newitems</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</newitems_setup>
<newitems_write>
<connection>
<use>core_write</use>
</connection>
</newitems_write>
<newitems_read>
<connection>
<use>core_read</use>
</connection>
</newitems_read>
</resources>
<events>
<catalog_product_save_after>
<observers>
<newitems>
<type>singleton</type>
<class>newitems/observer</class>
<method>catalog_product_save</method>
</newitems>
</observers>
</catalog_product_save_after>
</events>
</global>https://stackoverflow.com/questions/6816058
复制相似问题