我创造了这个观察者。如果我在test.php脚本中调用dispatchEvent,则观察者会工作。
include 'app/Mage.php';
umask(0);
Mage::app('default');
$event_data_array = array('cid' => '123');
Mage::dispatchEvent('customer_register_success', $event_data_array);
我正在app / Mage.php中记录事件,看看当我注册一个新用户时是否正在调用这个事件,事实确实如此。正在创建和编写var / log / myevent.log。
public static function dispatchEvent($name, array $data = array())
{
Varien_Profiler::start('DISPATCH EVENT:'.$name);
$result = self::app()->dispatchEvent($name, $data);
Varien_Profiler::stop('DISPATCH EVENT:'.$name);
if($name == 'customer_register_success') Mage::log('customer_register_success', null, 'myevent.log'); // This log file is being created when I go through the registration process.
return $result;
}
我的观察员代码如下(从此论坛复制)
应用程序/代码/本地/ Meteorify / Observerexample的/ etc / config.xml中
<?xml version="1.0"?>
<config>
<modules>
<Meteorify_Observerexample>
<version>0.0.1</version>
</Meteorify_Observerexample>
</modules>
<global>
<models>
<meteorifyobserverexample>
<class>Observerexample_Model</class>
</meteorifyobserverexample>
</models>
<events>
<customer_register_success>
<observers>
<meteorify_observerexample_model_observer>
<type>singleton</type>
<class>Meteorify_Observerexample_Model_Observer</class>
<method>example</method>
</meteorify_observerexample_model_observer>
</observers>
</customer_register_success>
</events>
</global>
</config>
应用程序/代码/本地/ Meteorify / Observerexample /型号/ Observer.php
<?php
class Meteorify_Observerexample_Model_Observer {
public function example($observer) {
//$observer contains data passed from when the event was triggered.
//You can use this data to manipulate the order data before it's saved.
//Uncomment the line below to log what is contained here:
//Mage::log($observer);
Mage::log('We just made an Observer!', null, 'mylog.log');
}
}
应用程序的/ etc /模块/ Meteorify_Observerexample.xml
<?xml version="1.0"?>
<config>
<modules>
<Meteorify_Observerexample>
<codePool>local</codePool>
<active>true</active>
</Meteorify_Observerexample>
</modules>
</config>
当我调用test.php时,代码正常工作并且正在创建var / log / mylog.log,但是当我注册用户时,它不会被调用。
答案 0 :(得分:0)
您的问题来自您的模型定义。
<models>
<meteorifyobserverexample>
<class>Meteorify_Observerexample_Model</class> <!-- and not Observerexample_Model -->
</meteorifyobserverexample>
</models>
您也可以尝试在<event>
node
<class>meteorifyobserverexample/observer</class> <!-- instead of Meteorify_Observerexample_Model_Observer -->
答案 1 :(得分:0)
好的,事实证明我有点蠢......我忘了关闭编译代码。
修复 - 在管理系统中 - &gt;工具 - &gt;编译 - 禁用。