我想将“epagine_download”属性添加到发票项目中。我创建了一个侦听sales_order_invoice_pay事件的Observer。想法是观察者将使用特定于客户的URL填充该属性'epagine_download'(实际上将通过调用外部Web服务获得)。
我已设法通过以下代码创建属性:
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttribute('invoice_item', 'epagine_download', array(
'label' => 'Download',
'type' => 'varchar',
'input' => 'text' ,
'visible' => false,
'required' => false
))
这是观察者的配置:
<?xml version="1.0"?>
<config>
<global>
<models>
<eboeksales>
<class>Eboek_Sales_Model</class>
</eboeksales>
</models>
<events>
<sales_order_invoice_pay>
<observers>
<eboek_sales_pay_observer>
<type>singleton</type>
<class>Eboek_Sales_Model_Pay_Observer</class>
<method>handle_sales_invoice_paid</method>
</eboek_sales_pay_observer>
</observers>
</sales_order_invoice_pay>
</events>
</global>
</config>
现在我无法实施观察者。似乎getData没有重新调用我的新属性“epagine_download”。我错过了什么?我通过在adminmodule中创建发票来测试它。由于某种原因,我不能在这里使用var_dump,所以我使用Mage :: log。我还调用一个未使用的函数GetBlahBlah,因此我得到一个异常,从而阻止创建发票,所以每次我想测试时我都不需要创建新的订单。
class Eboek_Sales_Model_Pay_Observer {
public function __construct()
{
}
/**
*
* @param Varien_Event_Observer $observer
* @return Eboek_Sales_Model_Pay_Observer
*/
public function handle_sales_invoice_paid($observer)
{
$event = $observer->getEvent();
Mage::log("Hello8812");
$inv=$event->getInvoice();
#Mage::log($inv);
$a= $inv->getAllItems();
Mage::log("=========================================================================");
Mage::log($a[0]->getOrderItem()->getData());
Mage::log("=========================================================================");
Mage::log($a[0]->getData());
Mage::log("=========================================================================");
$event->GetBlahBlah();
return $this;
}
}
(Magento版本为1.4) 感谢您的反馈...