我一直在尝试做一些看似简单的事情:
现在,在通过后端编辑的'customer_address'模型示例中,我发现两个保存事件都被触发了两次。
首次触发'customer_address_save_before',然后触发'customer_address_save_after'。在这两种情况下,getOrigData()和getData()都是相同的,除了getData()有一个新的'updated_at'值,并且设置了'store_id'(这是一个bug吗?)。因此,该模型还没有来自用户的提交数据。这些事件都在输入用户数据或验证之前,因此没有用。
'customer_address_save_before'被触发,第二次被'customer_address_save_after'触发。这次(在两种情况下),getOrigData()都是空的,而getData()现在拥有来自用户的所有提交数据。所以我无法比较这些事件!看来这是经过验证,保存,很多!
我也不确定为什么保存过程会出现两次?
Magento v1.3.2.4正在使用中。
我错过了什么吗?
答案 0 :(得分:6)
我结束了对customer_address_save_before的挂钩,并将结果与数据库中的内容进行比较,如下所示:
<?php
customer_address_save_before_listener ($event)
{
$address = $event->getCustomerAddress();
$database_address = Mage::getModel('customer/address')->load($address->getId());
}
?>
比较两者的getData()返回值。我遇到了三个问题: