Magento 2: Làm thế nào để vận chuyển chức năng api còn lại được gọi là On Checkout?


9

Khi bạn nhấp vào "Giao hàng tại đây" trên Trang Thanh toán, nó sẽ gọi

magento / phần còn lại / mặc định / V1 / xe / của tôi / ước tính-vận chuyển-phương thức-theo-địa chỉ-id

Sau đó, nó đi đến bên dưới các tệp JS

magento \ nhà cung cấp \ magento \ mô-đun kiểm tra \ view \ frontend \ web \ js \ model \ vận chuyển-tỷ lệ-bộ xử lý \ khách hàng-address.js

magento \ eller \ magento \ module-checkout \ view \ frontend \ web \ js \ model \ resource-url-manager.js

getUrlForEstimationShippingMethodsByAddressId: function(quote) {
    var params = (this.getCheckoutMethod() == 'guest') ? {quoteId: quote.getQuoteId()} : {};
    var urls = {
        'default': '/carts/mine/estimate-shipping-methods-by-address-id'
    };
    return this.getUrl(urls, params);
}

magento \ nhà cung cấp \ magento \ module-quote \ Model \ ShippingMethodQuản lý.php

 public function estimateByAddressId($cartId, $addressId)
    {
      echo 1;exit;
    }

Chức năng trên estimateByAddressIdđược gọi như thế nào?

Câu trả lời:


6

Như bạn đã chỉ ra, khi bạn nhấp vào "Giao hàng tại đây", một yêu cầu POST HTTP được gửi đến "/V1/carts/mine/estimate-shipping-methods-by-address-id"API REST (từ trích dẫn mô-đun). Nếu bạn nhìn vào module-quote/etc/webapi.xmlbạn sẽ tìm thấy url:

<route url="/V1/carts/mine/estimate-shipping-methods-by-address-id" method="POST">
  <service class="Magento\Quote\Api\ShippingMethodManagementInterface" method="estimateByAddressId"/>
  <resources>
    <resource ref="self" />
  </resources>
  <data>
    <parameter name="cartId" force="true">%cart_id%</parameter>
  </data>
</route>

Bạn có thể nhận thấy rằng dưới <route>phần tử có <service>phần tử với class="Magento\Quote\Api\GuestShipmentEstimationInterface"method="estimateByExtendedAddress". Bây giờ rõ ràng, estimateByAddressIdphương thức không thể được khởi tạo từ một giao diện.

Ở đây có cảnh tiêm phụ thuộc magento 2. Nhìn vào module-quote/etc/di.xmltệp ánh xạ một Magento\Quote\Api\ShippingMethodManagementInterfacephụ thuộc giao diện ( ) đến một lớp triển khai ưa thích ( Magento\Quote\Model\ShippingMethodManagement).

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\Quote\Api\ShippingMethodManagementInterface" type="Magento\Quote\Model\ShippingMethodManagement" />
    ...................
</config>

Đây là cách estimateByAddressIdphương thức được gọi.

Liên kết hữu ích:

API web Magento 2:
http://devdocs.magento.com/guides/v2.0/get-started/bk-get-started-api.html
http://devdocs.magento.com/guides/v2.0/ hướng dẫn mở rộng / hướng dẫn / hợp đồng dịch vụ / dịch vụ đến web-service.html

Magento 2 Phụ thuộc tiêm:
http://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html
http://magento-quickies.alanstorm.com/post/68129858943/magento- Giao diện 2 tiêm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.