Class Magento getEvent()->;getOrder为空
我正试图让一个观察员工作,看看是否已通过支票/支票付款,我知道观察员正在使用,因为我有一个日志记录显示。但是,当我尝试访问订单时,它要么是空的,要么不会打印到日志文件中 app/etc/modules/Foo_Bar.xmlClass Magento getEvent()->;getOrder为空,class,magento,observers,Class,Magento,Observers,我正试图让一个观察员工作,看看是否已通过支票/支票付款,我知道观察员正在使用,因为我有一个日志记录显示。但是,当我尝试访问订单时,它要么是空的,要么不会打印到日志文件中 app/etc/modules/Foo_Bar.xml <?xml version="1.0"?> <config> <modules> <Foo_Bar> <active>true<
<?xml version="1.0"?>
<config>
<modules>
<Foo_Bar>
<active>true</active>
<codePool>local</codePool>
</Foo_Bar>
</modules>
</config>
真的
地方的
app/code/local/Foo/Bar/etc/config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<global>
<models>
<foo_bar>
<class>Foo_Bar_Model</class>
</foo_bar>
</models>
<events>
<sales_order_payment_place_end> <!-- event -->
<observers>
<foo_bar> <!-- unique for event -->
<!-- type: singleton | disable | model -->
<class>foo_bar/observer</class>
<method>SalesOrderPaymentPlaceEnd</method>
</foo_bar>
</observers>
</sales_order_payment_place_end>
</events>
</global>
</config>
Foo_-Bar_模型
富巴尔/观察员
SalesOrderPaymentPlaceEnd
app/code/local/Foo/Bar/Model/Observer.php
<?php
class Foo_Bar_Model_Observer
{
public function SalesOrderPaymentPlaceEnd(Varien_Event_Observer $observer)
{
Mage::log('Location: SalesOrderPaymentPlaceEnd');
$order = $observer->getEvent()->getOrder();
Mage::log('order: '.$order);
}
}
@James已经对此发表了评论..我正在解释
事件“sales\u order\u payment\u place\u end”位于“app\code\core\Mage\sales\Model\order\payment.php”中
事件只有一个参数是Payment。所以
$order = $observer->getEvent()->getOrder();
这是行不通的。你需要使用
$orderPayment = $observer->getEvent()->getPayment();
对我有效的方法如下:
public function autoInvoiceForOfflinePayment(Varien_Event_Observer $observer)
{
$order = $observer->getEvent()->getPayment()->getOrder();
// In my case I was trying to get the payment method code, e.g.
$order->getPayment()->getMethodInstance()->getCode()
}
我希望这有帮助(MagentoEE1.14.2)
我发现,在创建钩子时,我忘记并经常再次发现的是查看发送事件的文件中的行:
e、 g.“app\code\core\Mage\Sales\Model\Order\Payment.php”
Mage::dispatchEvent('sales\u order\u payment\u place\u end',数组('payment'=>$this))
因此,您希望首先获取事件,然后在数组中获取payment变量:
$order=$observer->getEvent()->getPayment()
从那里你可以得到该文件中的任何公共函数,同样的原则似乎适用于整个文件。试试这个$observer->getEvent()->getPayment();