Magento Event Model вопрос - PullRequest
       4

Magento Event Model вопрос

1 голос
/ 16 августа 2011

Я довольно новичок в материалах 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 ]

3 голосов
/ 17 августа 2011

На самом деле код, который вы ввели, не вызывает событие, а отправляет его, так что другой модуль может прослушивать его.
В этом случае это событие прослушивается модулем Sales: вы можете проверить это, открыв app / code / core / Mage / Sales / etc / config.xml внутри тега <events> (внутри <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, и что $observer вы можете получить доступ к набору данных в событии, то есть: для доступа к 'result' -> $methodInstance = $observer->getEvent()->getMethodInstance();

Надежда, которая помогает

1 голос
/ 16 августа 2011

Вы не найдете ни одного класса или метода, представляющего это событие.Вы можете определить в своих модулях config.xml, что вы хотите наблюдать это событие и какой метод следует вызывать при каждом запуске этого события.Для получения дополнительной информации о Magento Event Observer, например, посмотрите http://codemagento.com/2011/04/observers-and-dispatching-events/.

...