呈现承运人/运输清单并绑定订单以在prestashop 1.7上进行自定义运输

在prestashop 1.7中,我使用了API(运费报价单)来获取可用的承运人/货运提供商。在CheckoutDeliveryStep.php课上,我写了以下内容

$carrierOptionsArr  = array( );
        if(!($xml===false) && $xml->children("soap",true)->count() ){
            $GetRatingEngineQuoteResponse = $xml->children("soap",true)->Body->children()->GetRatingEngineQuoteResponse;
            
            $errorsList = $GetRatingEngineQuoteResponse->children()->GetRatingEngineQuoteResult->children()->ValidationErrors->children();
            foreach ($errorsList->B2berror as $key => $value) {
                # code...
                echo "".$value->children()->ErrorMessage."<br>";
            }
        
            $carrierOptions = $GetRatingEngineQuoteResponse->children()->GetRatingEngineQuoteResult->children()->QuoteCarrierOptions;     
             foreach ($carrierOptions->children() as $key => $value) {
                //Carrier option id
                $carrier = array();
                $carrier["id"] = "".$value->children()->CarrierOptionId;

                //CArrier Name
                $carrier["name"] = "".$value->children()->CarrierName;

                //Quote Amount
                $carrier["amount"] = "".$value->children()->QuoteAmount;

                $carrierOptionsArr[] = $carrier;

             }
            }

        return $carrierOptionsArr;

并在此函数中呈现

 public function render(array $extraParams = array())
    {
        return $this->renderTemplate(
            $this->getTemplate(),$extraParams,array(
                'hookDisplayBeforeCarrier' => Hook::exec('displayBeforeCarrier',array('cart' => $this->getcheckoutSession()->getcart())),'hookDisplayAfterCarrier' => Hook::exec('displayAfterCarrier','id_address' => $this->getcheckoutSession()->getIdAddressDelivery(),'delivery_options' => $this->getcheckoutSession()->getDeliveryOptions(),'delivery_option' => $this->getcheckoutSession()->getSelectedDeliveryOption(),'recyclable' => $this->getcheckoutSession()->isRecyclable(),'recyclablePackAllowed' => $this->isRecyclablePackAllowed(),'delivery_message' => $this->getcheckoutSession()->getMessage(),'gift' => array(
                    'allowed' => $this->isgiftAllowed(),'isgift' => $this->getcheckoutSession()->getgift()['isgift'],'label' => $this->getTranslator()->trans(
                        'I would like my order to be gift wrapped %cost%',array('%cost%' => $this->getgiftCostForLabel()),'Shop.Theme.Checkout'
                    ),'message' => $this->getcheckoutSession()->getgift()['message']
                ),'options' => $this->getcarriers()

            )
        );
    }

在订单控制器页面显示承运人列表。但是,选择项目不会更新或不会被选为载体。从prestashop admin后端添加的运营商在运营商列表中的此处工作正常。如何像常规结帐流程那样将自定义承运人加入购物车订单?谢谢

iCMS 回答:呈现承运人/运输清单并绑定订单以在prestashop 1.7上进行自定义运输

您应该创建自己的模块,该模块将扩展CarrierModule并使用自定义逻辑在其中实现方法getOrderShippingCostgetOrderShippingCostExternal。您可以阅读更多here

本文链接:https://www.f2er.com/1894688.html

大家都在问