问题标签 [observers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
167156 浏览

java - 我们什么时候应该使用 Observer 和 Observable?

一位面试官问我:

什么是Observer以及Observable何时应该使用它们?

我不知道这些术语,所以当我回到家开始谷歌搜索ObserverandObservable时,我从不同的资源中找到了一些要点:

1)Observable是一个类,Observer也是一个接口。

2)Observable该类维护一个Observers 列表。

3)当一个Observable对象被更新时,它调用它update()的每个Observers的方法来通知它,它被改变了。

我找到了这个例子:

但我不明白为什么我们需要Observerand ObservablesetChanged()notifyObservers(message)方法是干什么用的?

0 投票
1 回答
2398 浏览

magento - 如何在 Magento 的观察者上更新 Grand Total?

我有活动的观察员

controller_action_predispatch_checkout_onepage_savePayment

我想根据某些条件更改总计。我试过:

$值 = 100;

$quote = Mage::getSingleton('checkout/type_onepage')->getQuote();

$quote->setGrandTotal($value);

$quote->setTotalsCollectedFlag(false)->collectTotals();

$quote->保存();

或者

$值 = 100;

$quote = Mage::getSingleton('checkout/type_onepage')->getQuote();

$quote->setGrandTotal($value);

$quote->collectTotals();

$quote->保存();

但它不起作用。有任何想法吗?

谢谢大家!

0 投票
4 回答
3921 浏览

php - Magento catalog_product_before_save 不会在实时服务器上触发

我正在部署中,我试图通过使用 Magento 的观察者和事件提供某些属性固定数据来覆盖产品保存,但问题是我已经在我一直在开发的本地工作,但是当我上传到服务器并尝试通过观察者运行时似乎根本没有触发。我基于本教程的以下代码:http: //www.magentocommerce.com/wiki/5__-_modules_and_development/0__-_module_development_in_magento/customizing_magento_using_event-observer_method

我有两个文件用于在 /app/code/local 中实现此目的。

/app/code/local/Leafcutter/目录/etc/config.xml

/app/code/local/Leafcutter/Catalog/Model/ProductAutoInsert/Observer.php

}

我也尝试输出一些文本进行测试,但没有任何内容进入日志,所以我认为事件没有被触发。我安装了确切的插件,所以我不确定实时版本的插件之间是否会发生冲突。

如果上面的代码可能不是真正的问题,还有哪些其他可能性会导致这个问题?

多谢你们。

0 投票
1 回答
1389 浏览

events - Magento Event Observer:修改 CatalogSearch 以包含自定义属性

我正在关注以下链接上的文章(使用事件/观察者自定义 Magento):

http://www.magentocommerce.com/wiki/5__-_modules_and_development/0__-_module_development_in_magento/customizing_magento_using_event-observer_method#step_7

但不确定第 7 步。我该如何执行本文中的第 7 步?

步骤 7
导航到前端的商品详情页面,观察新的折扣已经生效。这里要注意的是,在所有其他需要折扣价的屏幕上。此处的示例是搜索结果屏幕,您需要在其中将此新属性添加到方法中的选择查询搜索属性中

提前致谢。

0 投票
1 回答
956 浏览

xml - 从观察者更新布局

我正在使用滑块块 Magento,我正在尝试从 Observer 生成和更新我的布局:

事件:controller_action_layout_load_before

这是我的观察者方法:

事实是,这是我从“$myXML”变量中得到的:

它不起作用!但是当我试图在我的布局中复制/过去这个 xml 时,它可以工作!Xml 代码是正确的!我需要帮助
谢谢!

0 投票
2 回答
2371 浏览

events - 如何触发观看的无控制器核心 Magento 模块在来自外部脚本的 config.xml

背景参考参见:Magento:如何让观察者在外部脚本中工作?

我想问从外部脚本“复制”前端控制器操作的首选方法是什么。我正在为 Magento EE 1.12 创建一个外部 SSO 登录。

我的代码在 php 文件中如下所示。您可以通过创建 test.php 并将我的用户 (185) 替换为您的用户 ID 来测试它。导航到该页面,然后再次导航。您会注意到您已登录和退出,但是在管理员中它不会显示您在线。继续阅读...

此代码登录用户,但是没有依赖于 config.xml 中前端区域的 controller_action_predispatch 和 controller_action_postdispatch 事件的控制器的 Mage_Log、Mage_Persistent 或任何其他模块都不会触发。

Mage_Log 是这种情况的一个完美示例,它监视 customer_login 并触发 bindCustomerLogin() 函数(因为我使用了上面 Alan Storm 的建议)但控制器调度没有触发,导致模块无法正常工作。

这些其他模块怎么可能被外部脚本(或观察 controller_front_init_routers 事件的全局观察者)触发?

编辑:解决方案 这是上述 benmarks 建议的最终结果......我正在模拟 Mage_Customer 控制器。下面的脚本演示了如何执行一个完整的 magento 登录。它没有经过广泛测试,但确实显示用户已在后端登录。这是迄今为止我见过的最完整的解决方案。

0 投票
2 回答
574 浏览

php - Magento:无法捕获已调度的事件

为了开发基于付款方式和事件类型的自动订单状态更改器,我创建了以下模块:

/GT/OrderFlo/etc/config.xml

/GT/OrderFlow/Model/Observer.php

该代码是从http://www.atwix.com/magento/auto-invoice-and-custom-order-status-upon-checkout/复制而来的。

但是我怎样才能让它在sales_order_place_after事件发生后解雇观察者呢?

0 投票
2 回答
1182 浏览

php - 在观察者中获取购物篮产品 ID

我已经设置了一个观察者,sales_quote_add_item以便在要添加某种产品时清除购物车(它只应该单独订购)。我只是不确定如何获取即将添加的产品的产品 ID。经过一些试验和错误,我想出了这个:

这似乎是一个非常丑陋的解决方案。我确定有一些快捷方式或适当的功能可以调用这个,有什么想法吗?

0 投票
1 回答
1415 浏览

php - 从 sales_quote_add_item 观察者中止产品添加

在我的sales_quote_add_item-observer 中,我将如何以标准方式使用自定义错误消息中止产品添加?显然试图谷歌它并检查核心来源而没有变得更聪明......

0 投票
1 回答
66 浏览

ruby-on-rails-3 - 在观察者中使用翻译

我开始通过将通知邮件的发送外包给观察者来清理我的模型和控制器。

通过将它从控制器移动到观察器,我注意到一个问题:如果我调用“翻译”或简写“t”,我会得到答案“方法未定义”

好的,我真的很喜欢国际化的 Rails 实现。但是如何在模型和观察者中使用它呢?