Magento命令观察员没有抓住订单

时间:2014-06-16 11:20:28

标签: magento observers

我无法让magento回应事件sales_order_save_after。我用观察者来表示这个事件。我很确定我的xml很好,因为我使用Magicento。这是我的config.xml:

 <?xml version="1.0"?> 
 <config>     
        <modules>         
            <Magicento_Modul>             
                <version>0.1.0</version>         
            </Magicento_Modul>     
        </modules>     
        <global>         
        <models>             
                <magicento_modul>
                    <class>Magicento_Modul_Model</class>
            <resourceModel>magicento_modul_resource</resourceModel>
        </magicento_modul>             
        <magicento_modul_resource>
            <class>Magicento_Modul_Model_Resource</class>
            </magicento_modul_resource>
        </models>         
        <blocks>
            <magicento_modul>
                <class>Magicento_Modul_Block</class>
            </magicento_modul>        
        </blocks>         
        <helpers> 
            <magicento_modul> 
                <class>Magicento_Modul_Helper</class>
            </magicento_modul>         
        </helpers>          
        <events>            
            <sales_order_save_after>
                <observers> 
                    <magicento_modul_model_observer>
                        <class>Magicento_Modul_Model_Observer</class>
                        <type>singleton</type>
                        <method>act</method>
                    </magicento_modul_model_observer>
                </observers>              
            </sales_order_save_after>  
        </events>       
        </global>
 </config> 

这是我在本地/ Magicento / Modul / Model / Observer.php中的act方法:

class Magicento_Modul_Model_Observer { 
     public function act($observer)     { 
    $order=$observer->getPayment()->getOrder();

    $sa=$order->getShippingAddress();

    $fp = fopen('fajl_iz_magicento_modula.txt', 'w');
    fwrite($fp, $sa);            

     }  
 }

1 个答案:

答案 0 :(得分:1)

看起来你的观察者的行为方法有问题。事件sales_order_save_after不会分派付款对象,而是订购。所以在你的行为方法中进行纠正,如:

 $order = $observer->getEvent()->getOrder()

而不是

$order=$observer->getPayment()->getOrder();