我想創建一個事件,以便在訂單狀態更改爲完成時導出庫存。Magento創建自定義事件(order_status_changed)
我創建模塊覆蓋Mage_Sales_Model_Order並試圖產生的事件
(sales_order_status_change)。
當從magento管理面板我查看和命令和更改順序狀態完成,它的作品意味着打印我的擴展類中的東西,它顯示,它的罰款。這裏我產生了事件(問題可能在這裏,可能不會產生事件)
我創建了另一個模塊來觀察這個事件。但是我無法進入我的Observer類。我無法打印任何內容並退出,這意味着代碼無法運行。
但是在同一個觀察者類中,如果改變配置並觀察其他事件(來自Magento內置的事件),它就可以工作。像我測試catalog_controller_product_view
這裏是我的事件發生器模塊。
應用的/ etc /模塊/ Gol_Eventgenerator.xml
<?xml version="1.0"?>
<config>
<modules>
<Gol_Eventgenerator>
<active>true</active>
<codePool>local</codePool>
</Gol_Eventgenerator>
</modules>
</config>
應用\代碼\本地\高爾\ Eventgenerator \等\ config.xml中
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<Gol_Eventgenerator>
<version>0.1.0</version>
</Gol_Eventgenerator>
</modules>
<global>
<models>
<sales>
<rewrite>
<order>Gol_Eventgenerator_Model_Order</order>
</rewrite>
</sales>
</models>
</global>
</config>
應用\代碼\本地\高爾\ Eventgenerator \型號\ Order.php
<?php
class Gol_Eventgenerator_Model_Order extends Mage_Sales_Model_Order
{
public function setState($state, $status = false, $comment = '', $isCustomerNotified = null)
{
//if I print something here and exit, it does will.
Mage::dispatchEvent('sales_order_status_change', array('order' => $this, 'state' => $state, 'status' => $status, 'comment' => $comment, 'isCustomerNotified' => $isCustomerNotified));
return parent::setState($state, $status, $comment, $isCustomerNotified);
}
}
這裏是觀測器模塊的細節
應用的/ etc /模塊/ Gol_Inventory.xml
<?xml version="1.0"?>
<config>
<modules>
<Gol_Inventory>
<active>true</active>
<codePool>local</codePool>
</Gol_Inventory>
</modules>
</config>
應用\代碼\本地\高爾\庫存\等\ config.xml中
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<Gol_Inventory>
<version>0.1.0</version>
</Gol_Inventory>
</modules>
<global>
<events>
<sales_order_status_change>
<observers>
<Gol_Inventory_observer>
<type>singleton</type>
<class>Gol_Inventory_Model_Observer</class>
<method>exportEnventory</method>
</Gol_Inventory_observer>
</observers>
</sales_order_status_change>
</events>
</global>
</config>
應用\代碼\本地\高爾\庫存\ Model \ Observer.php
<?php
class Gol_Inventory_Model_Observer
{
public function exportEnventory($observer)
{
echo "Inside exportEvnentory method";
exit;
//$order = $observer->getEvent()->getOrder();
//$state = $observer->getEvent()->getState();
//$status = $observer->getEvent()->getStatus();
}
}
生成前端和管理事件的方式有什麼不同嗎?除了
,在配置文件中。
對不起,如果我沒有遵循一些很常見的事情。新的magento。
我試圖關注。
你不需要爲創建活動,觀察'sales_order_save_before',並與前一個 – OSdave
感謝檢查新的狀態了很多!我將從$觀察者獲得哪些屬性? 當這個事件將被解僱?當訂單從前端放置時?或當訂單狀態更改形式管理員?或兩者?? – sohail042414
我試過了,sales_order_save_before從雙方被解僱。但我想要一個事件,只有在訂單狀態更改爲完成時才能觸發。 **任何想法?? ** – sohail042414