Score:0

รับรายการวิธีการจัดส่งที่เกี่ยวข้อง

ธง ni

ฉันต้องการรายการวิธีการจัดส่งที่ใช้ได้สำหรับรถเข็นปัจจุบัน แต่ขึ้นอยู่กับโปรไฟล์การจัดส่งที่เลือก ฉันกำลังตั้งโปรแกรมคอนโทรลเลอร์แบบกำหนดเองที่ควรส่งคืนรายการวิธีการจัดส่งและอัตราการจัดส่งที่มีอยู่ แต่เห็นได้ชัดว่ามีรถเข็นและโปรไฟล์การจัดส่งของลูกค้า
มี โมดูลการจัดส่งเชิงพาณิชย์ บริการหรือคลาสใดที่ฉันสามารถใช้เพื่อรับข้อมูลนี้ บางที มีวิธีอื่นอีกไหมที่จะได้มันมา?

ฉันได้อ่านซอร์สโค้ดจาก:
Commerce_Shipping\src\Plugin\Commerce\CheckoutPane\ShippingInformation.php
นั่นคือปลั๊กอิน CheckoutPane ที่แสดงตัวเลือกการจัดส่งในหน้าชำระเงิน buildPaneForm เมธอดแสดงแบบฟอร์มนี้ และบรรทัดโค้ดเหล่านั้นควรให้รายการวิธีการจัดส่งแก่ฉัน:

 ฟังก์ชันสาธารณะ buildPaneForm (อาร์เรย์ $pane_form, FormStateInterface $form_state, อาร์เรย์ &$ Complete_form) {
    ...
    $shipments = $this->order->get('shipments')->referencedEntities();
    ...
    foreach ($shipments เป็น $index => $shipment) {
    ... // จัดส่งทุกรายการ
    }

แต่ฉันได้ลองใช้ในคอนโทรลเลอร์ที่กำหนดเองแล้ว และส่งคืนอาร์เรย์ว่างเสมอ ฉันคิดว่าควรมีกระบวนการก่อนหน้านี้ที่เติมรายการนี้ แต่ฉันหาไม่พบ ฉันลองใช้การเปลี่ยนสถานะแล้ว แต่ไม่ได้ผล

Score:0
ธง ni

หลังจากการค้นคว้าเชิงลึกเกี่ยวกับโมดูลการค้า ฉันพบวิธีที่จะได้รับโมดูลเหล่านี้ นี่คือข้อความที่ตัดตอนมาจากซอร์สโค้ดพร้อมคำแนะนำหลัก (คลาสคอนโทรลเลอร์ที่ส่งคืน JSON):

ฟังก์ชันสาธารณะ getShippingMethods (ขอ $request, $id) {
          
    $commerce_order = คำสั่งซื้อ::โหลด($id);       
    // ... ตรวจสอบบางอย่างเพื่อให้แน่ใจว่าเป็นคำสั่งซื้อขาย

    $shipments = $commerce_order->get('shipments')->referencedEntities();
    
    $ตัวเลือก = [];
    foreach ($ การจัดส่งเป็น $ การจัดส่ง) {     
      ยืนยัน (อินสแตนซ์การจัดส่ง $ ของ ShipmentInterface);      
      $rates = $this->shipmentManager->calculateRates($shipment);
      foreach ($ อัตราเป็น $ อัตรา) {
        $options[] = [ "id" => $rate->getShippingMethodId(), 
                       "วิธีการ" => $rate->getService()->getLabel(), 
                       "นำเข้า" => $rate->getAmount()->getNumber(),
                       "description" => $rate->getDescription()];              
      }
    }
            
    // ส่งคืน JSON ด้วยวิธีการจัดส่งทั้งหมด
    ส่งคืน JsonResponse ใหม่ ( $options );
  }

หวังว่ามันจะช่วยใครซักคนได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา