gpt4 book ai didi

php - 在保存事件之前/之后查看 Magento 模型数据更改?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:08 24 4
gpt4 key购买 nike

应该很简单:

  • Hook MODEL_save_after 事件(或者 MODEL_save_before 如果更合适的话)。
  • 检查 getData() 与 getOrigData() 以查看用户所做的更改。

在通过后台编辑的customer_address模型中,两个保存事件都被触发了两次。第一次触发 customer_address_save_before,随后触发 customer_address_save_after

在这两种情况下,getOrigData()getData() 是相同的,除了 getData() 有一个新的 updated_at 值,并设置了 store_id(这是一个错误吗?)。因此,该模型还没有用户提交的数据。这些事件都是在输入用户数据或验证之前发生的,所以这是没有用的。

customer_address_save_before 被触发,随后是 customer_address_save_after 第二次。这一次(在这两种情况下),getOrigData() 为空,getData() 现在拥有用户提交的所有数据。所以我也无法比较这些事件!看来这是经过验证,保存,很多!

为什么保存过程出现两次? Magento v1.3.2.4。

最佳答案

我结束了 hook customer_address_save_before,并将结果与​​数据库中的结果进行比较,如下所示:

<?php
customer_address_save_before_listener ($event)
{
$address = $event->getCustomerAddress();

$database_address = Mage::getModel('customer/address')->load($address->getId());
}
?>

并比较两者的 getData() 返回值。我遇到了三个问题:

  • 在 $address 上使用 getEntityTypeId() 并检查它。尽管 Hook “customer_address_save_before”,您还可以将 OrderAddress 模型发送给您的监听器(这对我来说似乎是错误的,但很好)。
  • 检查 $address->getData() 值中的数组。例如,“街道”作为单个字符串从数据库返回,而您的监听器传递的地址在末尾展开。
  • 传递给您的监听器的 CustomerAddress 有一个“store_id”。即使 CustomerAddress 不存储“store_id”,也不会保存(或从数据库中加载)。

关于php - 在保存事件之前/之后查看 Magento 模型数据更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2414610/

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