首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Commerce 2中的Commerce 2钩子(或事件)在哪里?

Commerce 2中的Commerce 2钩子(或事件)在哪里?
EN

Drupal用户
提问于 2020-07-15 17:19:26
回答 1查看 676关注 0票数 1

我正在努力将我们的支付系统从D7/DC1改为D8/DC2,原始代码使用钩子。我已经用事件替换了其中的一些,但是我找不到关于以下DC2版本的任何信息:

代码语言:javascript
复制
mymodule_form_commerce_checkout_form_checkout_alter()
mymodule_form_commerce_checkout_form_review_alter()
mymodule_form_commerce_checkout_complete()
mymodule_form_commerce_cart_add_to_cart_form_alter()

它们仍然是相同的还是很像以前的购物车(添加、更新、删除)钩子,这些也是事件,但我无法找到它们上的文档。任何人都知道相应的事件,或者在哪里可以找到这些文档(或它们的替代品)。

/*小更新*/

我找到了OrderEvents,我想我需要ORDER_PAID来代替mymodule_form_commerce_checkout_complete()

这个看起来对吗?

我将OrderEvents::ORDER_PAID => 'orderPaid‘添加到getSubscribedEvents(){}数组中,并拥有:

代码语言:javascript
复制
public function orderPaid(OrderEvent $event){
    $order = $event->getEntity();
    //Some internal logic here
    $order->save();
  }

//Updated尝试了一个钩子表单alter,并运行了我的签出过程,日志中没有显示任何内容

代码语言:javascript
复制
function srs_hook_form_alter(&$form, $form_state, $form_id){
  \Drupal::logger('hook_form_alter fires')->info('' . print_r($form_id, TRUE) . '');

}
EN

回答 1

Drupal用户

发布于 2020-07-15 22:46:16

正如您已经发现的,您可以在任何模块的src/Event/*Events.php文件中查找它们的事件列表。一旦您知道已收到付款,使用已付款事件是一种反应方式,但请注意,在只使用付款授权(而不是捕获)的情况下,该事件不会被触发。

在您的情况下,这可能是好的--如果不是,我会推荐在下订单时触发的commerce_order.place.pre_transition或commerce_order.place.post_transition事件。该事件来自状态机模块,并与顺序工作流转换相关。您可以在模块的自述中阅读更多有关它的信息。

至于表单更改,这些变化在D8中存在,就像它们在D7中一样。

票数 2
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/295298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档