我知道有很多帖子都有这个问题,但我猜他们每个都有不同的根源(至少从我检查的内容 - 没有帮助我).
我试图在点击用户的按钮时触发事件,但是我在浏览器警报中得到了上面提到的异常Mage registry key "_singleton/" already exists.
config.xml的一部分:
.....
<models>
<packagecustomernumber>
<class>Package_CustomerNumber_Model</class>
</packagecustomernumber>
</models>
</global>
<frontend>
<events>
<checkout_type_onepage_save_order>
<observers>
<type>singleton</type>
<class>packageName/customernumber/observer</class>
<method>setCustomerNumber</method>
</observers>
</checkout_type_onepage_save_order>
</events>
</frontend>
Run Code Online (Sandbox Code Playgroud)
班级本身:
class Package_CustomerNumber_Model_Observer
{
public function setCutomerNumber($observer)
{
die('setCutomerNumber');
}
}
Run Code Online (Sandbox Code Playgroud)
应该触发甚至检查/保存订单的按钮,因此事件应该是正确的.
有什么建议 ?
弹出的第一件事就是这个
<class>packageName/customernumber/observer</class>
Run Code Online (Sandbox Code Playgroud)
那是无效的.这是您告诉Magento用于观察者的类的节点.因此,<class/>节点应该是观察者的完整PHP类名
<class>Package_CustomerNumber_Model_Observer</class>
Run Code Online (Sandbox Code Playgroud)
或者模型的类别名
<class>packagecustomernumber/observer</class>
Run Code Online (Sandbox Code Playgroud)
此外,在运行观察者之前,确保可以实例化模型类是有帮助的.尝试在Magento加载的环境中运行以下代码(脚本,控制器操作,phtml模板等)
$model = new Package_CustomerNumber_Model_Observer;
var_dump(get_class($model));
$model = Mage::getModel('packagecustomernumber/observer');
var_dump(get_class($model));
Run Code Online (Sandbox Code Playgroud)
如果你无法实例化该类,那么Magento也将无法实现(并且在执行某些步骤以触发您的观察者之前,更容易进行测试).
| 归档时间: |
|
| 查看次数: |
13134 次 |
| 最近记录: |