2011-08-16 44 views
1

我是Magento內容的新手,現在我鎖定了一件事。我一直在試圖理解Magento的事件模型,我發現這條線:Magento事件模型問題

Mage::dispatchEvent('payment_method_is_active', array(
     'result'   => $checkResult, 
     'method_instance' => $this, 
     'quote'   => $quote, 
    )); 

現在,我明白了dispatchEvent名爲「payment_method_is_active」要求的情況下,問題是我無法找到此事件無處。我認爲它應該在法師 - >支付 - >模型 - >方法 - >中,但直到現在我都找不到。

你能幫我解答嗎?

回答

1

您不會找到任何代表此事件的類或方法。你可以在你的模塊config.xml中定義你想要觀察這個事件,並且每當這個事件被觸發時應該調用什麼方法。有關Magento Event Observer的更多信息,例如看看http://codemagento.com/2011/04/observers-and-dispatching-events/

+0

感謝Simon爲您提供了一個解決方案,問題在於我實施了一種付款方式,並且破解了我一直在使用的這段代碼,不允許我的付款方式被結帳頁面看到。但是我在選項「是」中說過被客戶視爲付款方式。說實話,我有點爲此煩惱。 請如果你能幫我一把,這真的很緊急,我不會找到答案,無論我尋找。 問候, 梅爾文 – katmel98

+0

你可以在這裏下載一些〔實施例代碼:[http://examples.oreilly.de/german_examples/magentopaiger/](http://examples.oreilly.de/german_examples/magentopaiger/)。 Webkochshop_Payment模塊是一個簡單的支付模塊。希望這可以幫助。您還可以在網上找到其他教程。例如。 [這裏](https://colourgray.wordpress.com/2009/11/11/magento-create-a-custom-payment-method/)或[here](http://inchoo.net/ecommerce/magento/如何對創建-的Magento支付模塊/)。 – Simon

3

其實,你已經把代碼不是調用的事件,但調度它,以便其他模塊可它。
在這種情況下,銷售模塊會偵聽此事件:您可以通過打開標籤<events><adminhtml>內)中的app/code/core/Mage/Sales/etc/config.xml來檢查該事件,見:

 <payment_method_is_active> 
      <observers> 
       <sales_billing_agreement> 
        <class>sales/observer</class> 
        <method>restrictAdminBillingAgreementUsage</method> 
       </sales_billing_agreement> 
      </observers> 
     </payment_method_is_active> 

你可以看到第一個標籤的事件(payment_method_is_active)的名稱相匹配。
sales_billing_agreement只是一個名稱來標識觀察。
<class>sales/observer</class>告訴你包含該方法的文件是Mage_Sales_Model_Observer
<method>restrictAdminBillingAgreementUsage</method>是這個文件中的方法的名稱,它在事件被分派並使用時採取一些行動。
在看看這個方法,你會看到,它需要一個參數,$observer和throufh是$observer你可以訪問數據的事件設置,即:訪問'result' - >$methodInstance = $observer->getEvent()->getMethodInstance();

希望這幫助