我讀了很多關於Magento自定義模塊創建的文檔。我錯在哪裏使用Magento的觀察者模式?
對於我的拳頭嘗試,我創建使用Module Creator模塊結構,這是我在/app/code/local/Test/MyModule/etc/config.xml
添加的代碼:
<?xml version="1.0"?>
<config>
<modules>
<Test_MyModule>
<version>0.1.0</version>
</Test_MyModule>
</modules>
<!-- frontend, admin, adminhtml -->
<global>
<!-- models, resources, blocks, helpers -->
<events>
<sales_order_place_before> <!-- event i need to catch -->
<observers>
<trigger_mymodule_placeorder>
<type>model</type>
<class>test/mymodule/model_observer</class>
<method>sendOrder</method>
</trigger_mymodule_placeorder>
</observers>
</sales_order_place_before>
</events>
</global>
</config>
我/app/etc/modules/Test_MyModule.xml
文件:
<?xml version="1.0"?>
<config>
<modules>
<Test_MyModule>
<active>true</active>
<codePool>local</codePool>
</Test_MyModule>
</modules>
</config>
這是我/app/code/local/Test/MyModule/Model/Observer.php
:
<?php
class Test_MyModule_Model_Observer
{
public function sendOrder()
{
// do something.
}
}
。但是Test_MyModule_Model_Observer :: sendOrder()函數從來沒有被觸發(我嘗試在它內部放入一個虛擬數據庫記錄器來查看函數是否被執行)。
我知道模塊本身是正確加載的,因爲在模塊的config.xml中,它在主菜單中聲明瞭一個新鏈接並且鏈接顯示正確(沖洗了magento的緩存之後),所以我猜問題是函數命名約定,我失蹤的地方..但在哪裏?
此外,我建議公共職能sendOrder()接受$觀察員的說法,所以這將是公共職能sendOrder($觀察員) –
不嚴格要求,但你是正確的,它肯定會增加更多的清晰度。 –
工作就像一個魅力! @JevgeniSmirnov是的,你是對的,在真正的功能,我會採取觀察員的參數做功能需要做的;我發佈的功能只是一個例子;) – Strae