Magento事件模型问题

时间:2011-08-16 09:51:56

标签: magento magento-1.4

我对Magento的东西很新手,现在我锁定了一件事。我一直在努力了解Magento的事件模型,我发现了这一行:

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

现在,我知道dispatchEvent使用名称“payment_method_is_active”调用事件,问题是我无法找到此事件。我认为它应该在Mage-> Payment-> Model-> Method-> ,但直到现在我都找不到它。

你可以帮我吗?

2 个答案:

答案 0 :(得分:3)

实际上,您放置的代码不是调用事件,而是调度它,以便其他模块可以监听到它。
在这种情况下,Sales模块会监听此事件:您可以通过在标记<events>内打开app / code / core / Mage / Sales / etc / config.xml来检查({{1}内部}),你会看到:

<adminhtml>

您可以看到第一个标记与事件的名称( <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,即:访问{{1} } - &gt; $observer

希望有助于

答案 1 :(得分:1)

您将找不到代表此事件的任何类或方法。您可以在模块config.xml中定义要观察此事件以及在触发此事件时应调用的方法。有关Magento Event Observer的更多信息,例如看看http://codemagento.com/2011/04/observers-and-dispatching-events/