web-dev-qa-db-ja.com

プログラムで注文ステータスを更新するにはどうすればよいですか?

支払いが受け入れられた後、ページコントローラーから注文ステータスを「完了」に更新する必要があります。

Drupal 8?)

これに関するドキュメントは見つかりません。 Drupal 7.の例があります。

// Updating Order status.
$orderObj = commerce_order_load($orderID);
commerce_order_status_update($orderObj, 'canceled', TRUE, 'Order Voided');
$orderObj->log = 'Order cancelled programatically';
commerce_order_save($orderObj); 
2
Webman

Commerce Orderクラスのステートマシンメソッドを使用します。

それはこのようなものですが、それはあなたがあなたの注文状態と呼んだものに依存します。

$order_state = $orderObj->getState();
$order_state_transitions = $order_state->getTransitions();
$order_state->applyTransition($order_state_transitions['complete']);

$orderObj->save();

わからない場合は、いつでも$order_state_transitions配列を使用して、どのオプションがあるかを確認します。

6
Chance G

単純にsetメソッドを使用できます。

$order->set('state', 'completed');
$order->save();
0

私はあなたが注文を「置く」ことを望んでいると思います。このイベントのイベントハンドラーを購読する必要があります:commerce_order.order.paid

そしてこのハンドラコードで:

  public function paymentCompletedHandler($event) {
    $order = $event->getOrder();
    $order->getState()->applyTransitionById('place');
    return;
  }
0
liquidcms