问题描述
|
我有一个处理事件的观察者:sales_payment_invoice_pay(或类似的东西)。
我要执行的操作是在付款方式为PayPal的情况下发送发票。
在1.4版中一切正常,只需执行$ observer-> getEvent()-> getorder()-> getPayment-> getmethodInstance()。
在1.5版或更高版本中,我似乎找不到任何解决方案。
我也尝试使用getData()但没有任何结果。
任何帮助表示赞赏。谢谢
急切地称呼我为答案将是轻描淡写。
解决方法
看来,传递给
sales_order_invoice_pay
事件的唯一数据是$this
,它将是sales/order_invoice
模型。我通过搜索Magneto核心代码发现了这一点,它在Invoice.php中被触发,如下所示:
Mage::dispatchEvent(\'sales_order_invoice_pay\',array($this->_eventObject=>$this));
查看一个类似事件(sales_order_invoice_register
),该事件具有观察者(在Enterprise的核心中,至少-Gift5ѭ在GiftCardAccount中),您可以在Observer方法中像这样访问Invoice对象:
$invoice = $observer->getEvent()->getInvoice();
发票是您将能获得的全部,因为它是dispatchEvent()
传递给观察员的唯一物品。您无法像尝试那样直接访问订单。
但是,从Invoice模型来看,它似乎有一个不错的getOrder
方法,应该可以解决问题。我尚未测试过,但是请尝试以下操作:
$observer->getEvent()->getInvoice()->getOrder()->getPayment->getMethodInstance();
干杯,祝你好运!
, 我可以使用此方法获取付款方式代码
$observer->getEvent()->getInvoice()->getOrder()->getPayment()->getMethodInstance()->getCode()
, 使用varien对象的debug()函数是此类事情的不错选择。.像这样:http://pastebin.com/wtdJdeLq-我无法获得在该站点上工作的代码东西,不要费心尝试不再。检查pastebin链接。
那里有order_id,像往常一样加载订单,getModel(\'... \')(非常快),并获得付款方式。
, 用户此代码:$ order-> getPayment()-> getMethodInstance()-> getCode();