当我需要在位于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)
| 归档时间: |
|
| 查看次数: |
3095 次 |
| 最近记录: |