2017-09-06 6 views
1

私はprestashopの変更に取り組んでいます。prestashopの注文が作成されたら、他のプラットフォームで注文を作成する必要があります。前のプログラマーは、 "controllers/front/OrderConfirmationController.php"コントローラーのメソッド "initContent"にコードを置きました。問題は、その点が注文や他の派生した問題の重複を許していることです。私はそれがより良い場所になると思う。注文が作成されるコントローラのどこにポイントがありますか?

私はそのコードを置く場所がどこにあるのかと聞いてきました。

答えて

1

他のプラットフォームで注文を作成する場合は、現在の注文ステータスに依存せず、PaymentModule :: validateOrderを上書きすることができます。

abstract class PaymentModule extends PaymentModuleCore 
{ 
    public function validateOrder($id_cart, $id_order_state, $amount_paid, $payment_method = 'Unknown', 
     $message = null, $extra_vars = array(), $currency_special = null, $dont_touch_amount = false, 
     $secure_key = false, Shop $shop = null) 
    { 
      parent::validateOrder($id_cart, $id_order_state, $amount_paid, $payment_method, $message, $extra_vars, $currency_special, $dont_touch_amount = false, $secure_key, $shop); 
      // use $this->currentOrder to get current id_order and create order on the other platform 
    } 
} 
+0

ありがとうございます、支払い方法ごとにこれを行う必要がありますか? – dlopezgonzalez

+0

いいえ、一部の支払いでvalidateOrderが定義されていない場合。各支払いモジュールはすでにPaymentModule :: validateOrderを呼び出し、注文を検証します(カートから作成します)。たとえば、BankWireクラスはPaymentModuleを継承し、validateOrder関数を持たないため、親validateOrderを呼び出します。 – sadlyblue

関連する問題