重写Magento礼品卡观察员功能

Sha*_*lly 8 magento

当我需要在位于Enterprise部分的观察者中重写一个函数时,该重写位在config.xml上的表现如何.

是这样的吗?

<global>
    <models>
        <enterprise>
            <rewrite>
                <giftcard>Custom_GiftCard_Model_Observer</giftcard>
            </rewrite>
        </enterprise>
    </models>
</global>
Run Code Online (Sandbox Code Playgroud)

我的类声明如下:class Custom_GiftCard_Model_Observer扩展Enterprise_GiftCard_Model_Observer {.....}

Ala*_*orm 17

我目前没有设置企业开发环境,所以这是未经测试的,但它应该如所描述的那样工作.

如果您查看礼品卡配置

app/code/core/Enterprise/GiftCard/etc/config.xml
Run Code Online (Sandbox Code Playgroud)

您可以查看并发现礼品卡观察员的类别名

<class>enterprise_giftcard/observer</class>
Run Code Online (Sandbox Code Playgroud)

因此,使用类别名,enterprise_giftcard/observer您的模型组名称为enterprise_giftcard,模型类名称为observer.

在模块的配置文件中,首先要为模型配置创建一个区域

<global>
    <models>

    </models>
</global>
Run Code Online (Sandbox Code Playgroud)

然后,您将添加要重写的类的组名, enterprise_giftcard

<global>
    <models>
        <enterprise_giftcard>
        </enterprise_giftcard>
    </models>
</global>
Run Code Online (Sandbox Code Playgroud)

然后,您将添加一个节点,表示您要重写此组中的单个类

<global>
    <models>
        <enterprise_giftcard>
            <rewrite>
            </rewrite>
        </enterprise_giftcard>
    </models>
</global>
Run Code Online (Sandbox Code Playgroud)

您将使用类alias(observer)的名称部分添加一个节点,指示要重写的组中的WHICH类

<global>
    <models>
        <enterprise_giftcard>
            <rewrite>
                <observer></observer>
            </rewrite>
        </enterprise_giftcard>
    </models>
</global>
Run Code Online (Sandbox Code Playgroud)

最后,在此节点中,您将添加一个文本节点,该节点是新类的名称.

<global>
    <models>
        <enterprise_giftcard>
            <rewrite>
                <observer>Custom_GiftCard_Model_Observer</observer>
            </rewrite>
        </enterprise_giftcard>
    </models>
</global>
Run Code Online (Sandbox Code Playgroud)

您可以通过直接实例化观察器并检查其类名来测试重写

$model = Mage::getModel('enterprise_giftcard/observer');
var_dump(get_class($model));
Run Code Online (Sandbox Code Playgroud)