繁体   English   中英

覆盖观察者?

Override observer?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我目前有一个带有观察者的Magento模块,该模块侦听以下事件:

  • sales_order_invoice_save_after
  • sales_order_place_after
  • sales_order_shipment_save_after
  • order_cancel_after

观察者在模型中调用一个方法,该方法打包有关订单的重要详细信息,并在客户端选择的输出(JSON,CSV,XML)中将其导出到远程系统。

不过,我有一个客户端,在导出数据之前需要对数据进行一些更改。

我想做的是使用自定义的本地模块扩展此模块,而不是制作一个“特殊”版本来永久维护。 我可以很容易地扩展模型,以覆盖处理此问题的方法,但是我不确定如何确保调用它。

如何覆盖观察者调用的类?

这甚至是解决我问题的正确方法吗? 例如,使用某种调度模型来寻找配置设置来决定哪个类将处理该过程是否更合适?

1 个回复

是否要覆盖观察者模型本身还是要覆盖由观察者调用的模型还不是很清楚。

Mage_Core_Model_App::dispatchEvent() ,Magento使用Mage::getModel($obs['model'])来获取观察者模型。 因此,只要您的配置通过其组名(即, modulename/modelname而不是Foo_Modulename_Model_ModelnameFoo_Modulename_Model_Modelname ,那么就可以使用标准的Magento重写在单独的模块中更改观察者模型:

<config>
  <global>
    <models>
      <!-- this is the group name of the module's models -->
      <modulename>
        <rewrite>
          <!-- rewrite the modulename/modelname model to use a different class -->
          <modelname>Bar_Modulename_Model_Modelname</modelname>
        </rewrite>
      </modulename>
    </models>
  </global>
</config>

如果您也想覆盖其他模型,则其工作方式相同。 例如,如果观察者调用Mage::getModel('mymodule/order_export') ,那么您应该以相同的方式重写mymodule/order_export类。

1 覆盖属性观察者

当我覆盖函数noise ,函数将被新函数替换。 但是当我用观察者覆盖属性时,旧值和新值都会被执行。 在操场上: 输出: 但是当我对一个观察者的财产做同样的事情时: 在操场上: 输出: 那么我应该如何用观察者覆盖属性以及如何防止旧值被执行呢? ...

2 覆盖 mixin 的观察者

正如您在此示例中所看到的,我有一个全局 mixin,其中包含一个value数据和一个针对此数据的观察者: 我也有两个组成部分: 没有任何观察者的NoMergeComponent 。 我希望这个组件使用默认的观察者; 应该覆盖默认观察器的MergeComponent 。 是否可以覆盖 ...

3 覆盖观察者或函数内部的检查语句?

我是JavaScript的新手(使用JQuery),并为固定标头创建了JQuery的观察程序(向下滚动隐藏,向上滚动显示)+调整观察程序大小以使其对移动方向友好。 我应该使用: 要么 或者完全是另一种观察者或其他东西? 也可以通过回答教程来解释这些事情,这将是很棒的- ...

4 从观察者覆盖整个magento布局

问题空间 我正在尝试使用magento中的观察者来根据请求中的参数完全替换给定请求的整个布局。 我面临的问题是,Magento仍在尝试加载与我在Observer中指定的模板不同的根块模板(特别是“frontend / base / default / template / page ...

5 多观察者和多观察者

我正在使用JAVA中的Observable类/观察器接口来实现观察者模式。 如果我有一个对象,我希望能够观察其他几个可观察对象(多个可观察对象)并具有多个观察者(多个观察者) 问题在类B中不是anobservable的,但我想在A和B中赋值以生成图表 有什么建议吗? 谢谢。 ...

6 Angular 单观察者,多观察者

学习 angular 到服务、组件和可观察对象。 我正在尝试在我的演示应用程序中实现暗模式。 控制由服务完成,该服务根据浏览器默认设置设置深色主题(如果找到)。 它在应用程序组件中初始化,以便稍后在应用程序中放置控制开关。 暗模式从布尔值开始工作,所以要么是真要么是假。 据我所知,使用 obs ...

7 根据可观察者组合可观察者

结构: api.vehicles()端点返回ID列表。 api.driveState(int id)返回以id为参数的车辆的状态。 我需要的: 调用.vehicles() 。 对于返回的ID,请在.driveState(id)端点上按ID进行调用,并等待所有调用成功并一起返 ...

8 如何让观察者作为可观察者返回?

我是rxjs的新手,想要解决这个问题。 我想将一个Observer传递给onAuthStateChanged() ,它接受一个观察者对象。 观察者会做一些工作并发出一个布尔值,以便布尔值可以作为Observable返回。 我如何实现从可观察到观察者的这个桥梁? ...

9 观察者模式 - 观察者创建

我正在学习设计模式,我偶然发现了一个我真不知道如何找到答案的问题。 在观察者设计模式类图中,我已经看到具体观察者通常具有对主题的引用。 但是,谁设定了该参考的价值? 如何调用Attaching函数? 观察者是根据他们所拥有的主题参考来自己调用它,还是其他人设置主题然后将观察者附加到主题上 ...

10 谁是观察者,谁是可观察者?

在大型模块化应用程序中,您如何确定谁是观察者和谁是可观察者? 例如,假设我们有2个模块: 博客模块:创建和管理博客文章。 社交媒体模块:读取和写入社交媒体流。 假设我们要实现一种功能,当用户在“创建博客”帖子页面上时,如果他启用了社交媒体模块,我们还包括一组处理发 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM