customer_register_success自定义观察者未被执行

时间:2015-02-02 21:55:40

标签: php magento

我创造了这个观察者。如果我在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,但是当我注册用户时,它不会被调用。

2 个答案:

答案 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;编译 - 禁用。