我正在努力将我们的支付系统从D7/DC1改为D8/DC2,原始代码使用钩子。我已经用事件替换了其中的一些,但是我找不到关于以下DC2版本的任何信息:
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(){}数组中,并拥有:
public function orderPaid(OrderEvent $event){
$order = $event->getEntity();
//Some internal logic here
$order->save();
}//Updated尝试了一个钩子表单alter,并运行了我的签出过程,日志中没有显示任何内容
function srs_hook_form_alter(&$form, $form_state, $form_id){
\Drupal::logger('hook_form_alter fires')->info('' . print_r($form_id, TRUE) . '');
}发布于 2020-07-15 22:46:16
正如您已经发现的,您可以在任何模块的src/Event/*Events.php文件中查找它们的事件列表。一旦您知道已收到付款,使用已付款事件是一种反应方式,但请注意,在只使用付款授权(而不是捕获)的情况下,该事件不会被触发。
在您的情况下,这可能是好的--如果不是,我会推荐在下订单时触发的commerce_order.place.pre_transition或commerce_order.place.post_transition事件。该事件来自状态机模块,并与顺序工作流转换相关。您可以在模块的自述中阅读更多有关它的信息。
至于表单更改,这些变化在D8中存在,就像它们在D7中一样。
https://drupal.stackexchange.com/questions/295298
复制相似问题