2011-03-31 44 views
0

我知道這個問題可能看起來很奇怪,但我想獲得當前調度事件的列表。 事情是,我是一個懶惰的人,我想檢查'checkout_cart_add_product_complete'是否已經被觸發而沒有爲它創建觀察者。獲取當前調度事件的列表

這樣的想法是讓所有分派的事件的數組,並在其上:)做一個in_array

我認爲法師:: getEvents() - > getAllEvents()會拋出一些信息,但它只是回報一個空陣列。

我還在lib/Varien/Event文件和文件夾中挖了一下,但沒有成功地以編程方式創建觀察者。是的,我知道,爲什麼變得簡單而人變得複雜? :)

所以這個主要問題(獲得調度事件列表)隱藏了另一個(純知識)這將是「如何以編程方式創建觀察者」。

您認爲如何?

非常感謝!

回答

1

看看dispatchEvent,你會發現事件只能通過SimpleXML從ass.xml文件中加載。除了覆蓋Mage_Core_Model_App,我看不出任何方法來攔截此。

當然,不能有一個事件調度事件,這將創建一個無限循環,所以沒有辦法觀察所有事件。

如果您需要查看事件進行開發,我的建議是使用調試器在dispatchEvent中設置斷點,這樣您不僅可以看到事件名稱,還可以看到作爲參數傳遞的對象。我試過other ways before,但這對我來說最方便。

+0

是的......這就是我不得不接受的結論,事實上,obsevers被加載到配置中,所以如果我是正確的,那麼沒有辦法創建一個。我試圖用所有正確的參數來做一個Mage :: addObserver(),並且我沒有錯誤但沒有輸出。然後,我必須創建一個小模塊來創建一個事件...不是很優雅,但似乎這是Magento的方式:)謝謝! – 2011-03-31 13:53:38

+0

'法師:: addObserver'是退化的。它看起來像法事件模型被替換爲應用程序事件模型,所以它不再有效果。 – clockworkgeek 2011-03-31 13:58:16

0

我需要做同樣的事情,我認爲可以通過Mage_Core_Model_Config中的函數getEventConfig來欺騙magento。你可以強迫他自動添加一個默認的觀察者。

+0

顯然它不可能重寫類Mage_Core_Model_Config,所以我的想法不能工作。 – Alexandre 2012-11-29 14:21:05