Events 付款方式创建观察员

Events 付款方式创建观察员,events,magento,Events,Magento,我目前正在创建一个模块,允许后端用户管理客户允许的付款方式。Magento event/observer提供了很多帮助——我需要为被这个系统很好地吸引的客户做的一切,并将其传输到我的代码中。但是我还需要钩住付款方式创建事件(注册新的付款方式模块)。我知道Magento中没有这样的事件(如果我错了,请纠正我),但我需要一些解决方法来实现这样的功能(好/正确的方法) 因此,这里有一个问题: 在Magento中管理(钩住)付款方式创建(付款模块注册)事件的最佳(好的/正确的)方法是什么 对不起,我的语

我目前正在创建一个模块,允许后端用户管理客户允许的付款方式。Magento event/observer提供了很多帮助——我需要为被这个系统很好地吸引的客户做的一切,并将其传输到我的代码中。但是我还需要钩住付款方式创建事件(注册新的付款方式模块)。我知道Magento中没有这样的事件(如果我错了,请纠正我),但我需要一些解决方法来实现这样的功能(好/正确的方法)

因此,这里有一个问题:

在Magento中管理(钩住)付款方式创建(付款模块注册)事件的最佳(好的/正确的)方法是什么


对不起,我的语言不好。。。谢谢你的回答

您可以研究模块安装。特别是,所有模块都插入到数据库中:

core_resource
我还建议从以下方面着手:

Mage_Core_Model_Resource_Setup
另外,debug_backtrace()可能会对您有所帮助。当您第一次放置模块时,您可以回溯其安装方式

更新1

尝试跟踪以下函数:

/**
 * Processing object after save data
 *
 * @return Mage_Core_Model_Abstract
 */
protected function _afterSave()
{

/**
 * Callback function which called after transaction commit in resource model
 *
 * @return Mage_Core_Model_Abstract
 */
public function afterCommitCallback()
{

/**
 * Get array of objects transfered to default events processing
 *
 * @return array
 */
protected function _getEventData()
{

那么请具体说明你的最后一个目标。也许有比通过观察者更好的解决方案。

您可以研究模块安装。特别是,所有模块都插入到数据库中:

core_resource
我还建议从以下方面着手:

Mage_Core_Model_Resource_Setup
另外,debug_backtrace()可能会对您有所帮助。当您第一次放置模块时,您可以回溯其安装方式

更新1

尝试跟踪以下函数:

/**
 * Processing object after save data
 *
 * @return Mage_Core_Model_Abstract
 */
protected function _afterSave()
{

/**
 * Callback function which called after transaction commit in resource model
 *
 * @return Mage_Core_Model_Abstract
 */
public function afterCommitCallback()
{

/**
 * Get array of objects transfered to default events processing
 *
 * @return array
 */
protected function _getEventData()
{

那么请具体说明你的最后一个目标。也许有比通过观察者更好的解决方案。

模块安装在应用程序初始化的早期;事实上,它发生在解析事件区域之前,因此无法触发事件观察者。请参阅
Mage\u Core\u Model\u App::run()
。请注意在
\u initModules()
之后如何调用
loadAreaPart()
(它触发事件观察者配置的加载)(在其中我们可以找到模块安装调用
Mage\u Core\u Model\u Resource\u Setup::applyAllUpdates()
)。因此,标准事件调度将毫无意义


从一般应用程序设计的角度来看,我认为使用Magento的事件驱动架构来实现这一目的是过分的。安装任何模块时,都必须接触数据库。与其让一个普通的观察者查看所有的模块安装,您应该实现您自己的资源设置类,该类从
Mage\u Core\u Model\u resource\u setup
扩展而来-几个核心模块可以这样做。在此自定义设置资源类中,您可以执行当前正在考虑的任何任务(发送电子邮件、记录一些信息、向数据库写入附加记录等)。从这里开始,您和您的开发人员将要求每个新的支付模块使用此安装资源来安装支付模块。

模块安装在应用程序初始化的早期;事实上,它发生在解析事件区域之前,因此无法触发事件观察者。请参阅
Mage\u Core\u Model\u App::run()
。请注意在
\u initModules()
之后如何调用
loadAreaPart()
(它触发事件观察者配置的加载)(在其中我们可以找到模块安装调用
Mage\u Core\u Model\u Resource\u Setup::applyAllUpdates()
)。因此,标准事件调度将毫无意义


从一般应用程序设计的角度来看,我认为使用Magento的事件驱动架构来实现这一目的是过分的。安装任何模块时,都必须接触数据库。与其让一个普通的观察者查看所有的模块安装,您应该实现您自己的资源设置类,该类从
Mage\u Core\u Model\u resource\u setup
扩展而来-几个核心模块可以这样做。在此自定义设置资源类中,您可以执行当前正在考虑的任何任务(发送电子邮件、记录一些信息、向数据库写入附加记录等)。从这里开始,您和您的开发人员将要求每个新的支付模块使用此安装资源来安装支付模块。

在安装支付模块时,是否有办法区分支付方式和非支付方式模块?首先,支付方式取决于Mage_支付。因此,可能无法对模块进行正常的分类。但是您可以在模块中设置一些特定的逻辑。所以,当安装支付模块时,它会告诉您的侦听器:“嘿,我是支付方法!让我们……”特别是,您应该指定您的模块依赖于它。好的。然后:数据被插入数据库-表示特殊事件已经触发。此外,根据事件,您应该能够获得模块,所以检查它是否是您的人。@JakeTheFish事件不会在模块安装过程中触发。此外,与数据模型相关联的自动触发事件来自
Mage\u Core\u Model\u Abstract
,而
Mage\u Core\u Model\u Resource
没有扩展。安装时是否有方法区分付款方式和非付款方式模块?首先,付款方式取决于Mage\u付款。因此,可能无法对模块进行正常的分类。但是您可以在模块中设置一些特定的逻辑。所以,当安装支付模块时,它会告诉您的侦听器:“嘿,我是支付方法!让我们……”特别是,您应该指定您的模块依赖于它。好的。然后:数据被插入数据库-表示特殊事件已经触发。此外,根据事件,您应该能够获得模块,所以检查它是否是您的人。@JakeTheFish事件不会在模块安装过程中触发。此外,与数据模型关联的自动触发事件来自
Mage\u Core\u Model\u Abstract
,而
Mage\u Core\u Model\u资源
并未扩展。“每个新的支付模块都使用此设置资源来安装支付模块”