为了根据付款方式和事件类型开发自动订单状态转换器,我创建了以下模块:
/GT/OrderFlo/etc/config.xml
<!--?xml version="1.0"?-->
<config>
<modules>
<gt_orderflow>
<version>1.0</version>
</gt_orderflow>
</modules>
<global>
<models>
<orderflow>
<class>GT_OrderFlow_Model</class>
</orderhook>
</models>
<events>
<sales_order_place_after>
<observers>
<order_payment_pending_autostatus>
<type>singleton</type>
<class>orderflow/observer</class>
<method>implementOrderStatus</method>
</order_payment_pending_autostatus>
</observers>
</sales_order_place_after>
<sales_order_shipment_save_after>
<observers>
<order_invoice_pending_autostatus>
<type>singleton</type>
<class>orderflow/observer</class>
<method>implementOrderStatus</method>
</order_invoice_pending_autostatus>
</observers>
</sales_order_shipment_save_after>
<sales_order_invoice_save_commit_after>
<observers>
<order_complete_autostatus>
<type>singleton</type>
<class>orderflow/observer</class>
<method>implementOrderStatus</method>
</order_complete_autostatus>
</observers>
</sales_order_invoice_save_commit_after>
</events>
</global>
</config>
/GT/OrderFlow/Model/Observer.php
class GT_OrderFlow_Model_Observer
{
public function implementOrderStatus($event)
{
$order = $event->getOrder();
$payment_method = $this->_getPaymentMethod($order);
$this->_log('In implementOrderStatus with payment method: '.$payment_method);
Mage::log('In implementOrderStatus with payment method: '.$payment_method);
$next_status = "";
return $this;
}
private function _getPaymentMethod($order)
{
return $order->getPayment()->getMethodInstance()->getCode();
}
private function _log($message)
{
return Mage::log($message, null, 'gt_orderflow.log');
}
}
代码是从http://www.atwix.com/magento/auto-invoice-and-custom-order-status-upon-checkout/复制的。
但是我怎样才能在sales_order_place_after
事件之后触发观察者?
答案 0 :(得分:0)
你的模块是否已加载?您需要/app/etc/modules
中的文件。在相关的说明中,我看到您将模块称为<gt_orderflow>
,但类前缀为GT_OrderFlow
。在区分大小写的文件系统上,这很重要,不会以这种方式工作。 config/modules
下的节点映射到模块路径。
答案 1 :(得分:0)
我认为你有一个错字
<models>
<orderflow>
-----^
<class>GT_OrderFlow_Model</class>
</orderhook>
-----^
</models>