web-dev-qa-db-ja.com

誰かが注文を手動で編集したときに製品バリエーションのフィールド値を変更するにはどうすればよいですか?

「イベントサブスクライバー」コントローラーを実装して、製品バリエーションの在庫値を変更しました。在庫は商品バリエーションの分野です。

注文アイテムの数量に応じて、Drupal 8イベント注文$events['commerce_order.place.post_transition']に登録することで在庫の値を減らしています。同様に、彼がイベントを使用して注文をキャンセルした場合、在庫値を増やしました$events['commerce_order.cancel.post_transition']

その時点で誰かがバックオフィスから注文数量を変更した場合、それに応じて在庫を増減する必要があります。どのようにしてそれを達成できますか?注文アイテムが編集されるイベントはありますか?現在、注文時に在庫を減らしています...誰かがバックエンドから注文を手動で編集するときに、どのように減少/増加できますか?

1
Rifas Ali

オーダーアイテム編集時のイベントはありますか?

hook_ENTITY_TYPE_update を使用できます

/*
 * Implements hook_ENTITY_TYPE_update()
 */
function mymodule_order_update(\Drupal\commerce_order\Entity\OrderInterface $order) {
  // your code goes here
}

フックを使用したくない場合は、 Hook Event Dispatcher モジュールの使用を検討してください。

このモジュールは、いくつかのDrupalコアフックのイベントをディスパッチします。これにより、古いフックシステムの代わりにD8イベントサブスクライバーシステムを使用して、特定のイベントに反応することができます。このモジュールには、ほとんどのイベントが含まれています一般的なフック。

1
No Sssweat