我已经在本地机器上设置了一个默认的“无修改”magento 副本,以在我们的生产机器上复制结果。
当我尝试在模块中捕获事件“adminhtml_customer_save_after”时,它总是在 customer_save_before 上返回/停止。对于任何 customer_save_after 类型事件也是如此。
添加
file_put_contents('/tmp/events.log','Dispatching '. $name. "\n",FILE_APPEND);
到 /var/www/app/Mage.php 中的 dispatchEvent 函数验证它确实在 customer_save_before 上返回,即使这不是我要求的事件。
请验证这一点并让我知道这是否是预期的功能。当我们的呼叫中心/订单团队在站点的管理端创建新客户(用于下达电话订单)以与我们公司的数据库同步时,我必须有权访问 magento 管理部分中的 entity_id。
来自模块的 PHP
<?php
class NKI_CustomerSync_Model_Observer
{
public function AddCustomerToQueue($observer)
{
$event = $observer->getEvent();
$customer = $event->getCustomer();
$model=$event->getModel();
echo "<PRE>";
var_dump($event->getName());
var_dump($event->getData());
var_dump($event);
var_dump(get_class_methods($event));
die();
}.....
XML
<config>
<modules>
<NKI_CustomerSync>
<version>0.1.0</version>
</NKI_CustomerSync>
</modules>
<global>
<events>
<adminhtml_customer_save_after>
<observers>
<NKI_customersync_model_observer>
<type>singleton</type>
<class>NKI_CustomerSync_Model_Observer</class>
<method>AddCustomerToQueue</method>
</NKI_customersync_model_observer>
</observers>
</adminhtml_customer_save_after>