Prestashop 控制器中创建订单的点在何处?

Prestashop 控制器中创建订单的点在何处?,prestashop,prestashop-1.6,Prestashop,Prestashop 1.6,我正在进行一个预结算修改,创建预结算订单时,我需要在其他平台中创建一个订单。前面的程序员将代码放在“controllers/front/OrderConfirmationController.php”控制器的方法“initContent”上。问题是这一点允许订单重复和其他衍生问题。我认为那可能是一个更好的地方 我想问一下,把代码放在哪里比较好。如果您想在其他平台上创建订单,而不取决于当前的订单状态,您可以覆盖PaymentModule::validateOrder abstract class

我正在进行一个预结算修改,创建预结算订单时,我需要在其他平台中创建一个订单。前面的程序员将代码放在“controllers/front/OrderConfirmationController.php”控制器的方法“initContent”上。问题是这一点允许订单重复和其他衍生问题。我认为那可能是一个更好的地方


我想问一下,把代码放在哪里比较好。

如果您想在其他平台上创建订单,而不取决于当前的订单状态,您可以覆盖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
     }
}

谢谢,我需要为每种付款模式都这样做吗?不,除非某些付款定义了validateOrder。每个支付模块已经调用PaymentModule::validateOrder来验证订单(从购物车创建订单)。例如,BankWire类扩展了PaymentModule,并且没有任何validateOrder函数,因此它将调用父validateOrder。