Переписывание функции наблюдателя Magento Gift Card

Когда мне нужно переписать функцию в наблюдателе, расположенном в разделе Enterprise, как этот бит перезаписи будет выглядеть в config.xml.

это что-то вроде этого?

<global>
    <models>
        <enterprise>
            <rewrite>
                <giftcard>Custom_GiftCard_Model_Observer</giftcard>
            </rewrite>
        </enterprise>
    </models>
</global>

Мой класс объявлен следующим образом: class Custom_GiftCard_Model_Observer extends Enterprise_GiftCard_Model_Observer { ..... }


person ShaunOReilly    schedule 19.01.2012    source источник


Ответы (1)


На данный момент у меня нет настроенной среды разработки предприятия, поэтому она не проверена, но она должна работать, как описано.

Если вы посмотрите на конфигурацию подарочной карты в

app/code/core/Enterprise/GiftCard/etc/config.xml

Вы можете просмотреть и найти псевдоним класса для обозревателя подарочных карт.

<class>enterprise_giftcard/observer</class>

Итак, с псевдонимом класса enterprise_giftcard/observer у вас есть имя группы моделей enterprise_giftcard и имя класса моделей observer.

В файле конфигурации вашего модуля сначала вы создадите область для конфигурации модели.

<global>
    <models>

    </models>
</global>

Затем вы добавите название группы класса, который хотите переписать, enterprise_giftcard

<global>
    <models>
        <enterprise_giftcard>
        </enterprise_giftcard>
    </models>
</global>

Затем вы добавите узел, в котором говорится, что вы хотите переписать один класс в этой группе.

<global>
    <models>
        <enterprise_giftcard>
            <rewrite>
            </rewrite>
        </enterprise_giftcard>
    </models>
</global>

Затем вы добавите узел, указывающий, КАКОЙ класс в группе вы хотите переписать, используя часть имени псевдонима класса (observer)

<global>
    <models>
        <enterprise_giftcard>
            <rewrite>
                <observer></observer>
            </rewrite>
        </enterprise_giftcard>
    </models>
</global>

И, наконец, внутри этого узла вы добавите текстовый узел с именем вашего нового класса.

<global>
    <models>
        <enterprise_giftcard>
            <rewrite>
                <observer>Custom_GiftCard_Model_Observer</observer>
            </rewrite>
        </enterprise_giftcard>
    </models>
</global>

Вы можете протестировать переписывание, создав экземпляр наблюдателя напрямую и проверив имя его класса.

$model = Mage::getModel('enterprise_giftcard/observer');
var_dump(get_class($model));
person Alan Storm    schedule 19.01.2012
comment
Хорошо описание, я твой последователь. - person Gowri; 19.01.2012
comment
Это сделало работу, спасибо. Я рвал на себе волосы, потому что забыл основы! - person ShaunOReilly; 19.01.2012
comment
Привет @Alan Нам нужно добавить разделы ‹frontend› ‹events› также в config.xml, чтобы переопределение работало, как я вижу в следующем руководстве atwix.com/magento/overriding-observers - person Mukesh; 10.11.2016