我对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-> ,但直到现在我都找不到它。
你可以帮我吗?
答案 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/。