Pertama-tama saya ingin memberikan tangkapan layar untuk memahami masalah saya.
Sekarang saya ingin menambahkan kode terkait di sini.
etc / frontend / di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Checkout\Model\CompositeConfigProvider">
<arguments>
<argument name="configProviders" xsi:type="array">
<item name="checkout_deliverysign_block" xsi:type="object">Kensium\DeliverySign\Model\DeliverySignConfigProvider</item>
</argument>
</arguments>
</type>
</config>
DeliverySignConfigProvider
<?php
namespace Kensium\DeliverySign\Model;
use Magento\Checkout\Model\ConfigProviderInterface;
use Magento\Store\Model\ScopeInterface;
class DeliverySignConfigProvider implements ConfigProviderInterface
{
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
*/
protected $scopeConfiguration;
protected $checkoutSession;
protected $logger;
/**
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfiguration
* @codeCoverageIgnore
*/
public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfiguration,
\Magento\Checkout\Model\Session $checkoutSession,
\Psr\Log\LoggerInterface $logger
)
{
$this->scopeConfiguration = $scopeConfiguration;
$this->checkoutSession=$checkoutSession;
$this->logger=$logger;
}
/**
* {@inheritdoc}
*/
public function getConfig()
{
$deliverySignConfig = [];
$enabled = $this->scopeConfiguration->getValue('deliverysign/deliverysign/status', ScopeInterface::SCOPE_STORE);
$minimumOrderAmount = $this->scopeConfiguration->getValue('deliverysign/deliverysign/minimum_order_amount', ScopeInterface::SCOPE_STORE);
$quote=$this->checkoutSession->getQuote();
$subtotal=$quote->getSubtotal();
$this->logger->addDebug($subtotal);
$deliverySignConfig['delivery_sign_amount'] = $this->scopeConfiguration->getValue('deliverysign/deliverysign/deliverysign_amount', ScopeInterface::SCOPE_STORE);
$deliverySignConfig['show_hide_deliverysign_block'] = ($enabled && ($minimumOrderAmount<$subtotal) && $quote->getFee()) ? true : false;
$deliverySignConfig['show_hide_deliverysign_shipblock'] = ($enabled && ($minimumOrderAmount<$subtotal)) ? true : false;
return $deliverySignConfig;
}
}
Silakan temukan di bawah untuk detail lebih lanjut
https://github.com/sivajik34/Delivery-Signature-Magento2
Pengamatan saya adalah DeliverySignConfigProvider
objek tidak memanggil saat Anda mengklik tombol berikutnya , hanya pemanggilannya saat Anda memuat ulang halaman . Adakah yang bisa membantu saya dalam hal ini?
magento2
checkout
knockoutjs
sivakumar
sumber
sumber
Plugin/Checkout/Model/ShippingInformationManagement.php
.Jawaban:
Saya pikir kita tidak perlu memuat ulang ringkasan total. Karena, ketika mengklik tombol Next , Magento akan membuat permintaan (API)
V1/carts/mine/shipping-information
untuk menghitung ulang total dan menampilkan total data ke templat kami.Jadi, jika kita ingin memeriksa biayanya, kita harus memeriksa jawabannya
total_segments
Ketika mengklik Di sebelah langkah pembayaran, ada permintaan untuk mengatur vendor informasi pengiriman / magento / module-checkout / view / frontend / web / js / view / shipping.js
Permintaan ini akan menghitung ulang totalnya.
Dalam kasus Anda, dalam templat html kami, itu harus memiliki
isDisplayed()
fungsi:Kensium / DeliverySign / view / frontend / web / template / checkout / cart / total / fee.html
Periksa
isDisplayed()
fungsi:Kensium / DeliverySign / view / frontend / web / js / view / checkout / keranjang / total / fee.js
Fungsi ini akan memeriksa total
fee
segmen dari respons.Saya membuat git menarik di sini .
CATATAN: Pastikan biaya Anda dihitung dengan benar. Pada langkah pembayaran, harap periksa respons sudah termasuk biaya kami.
sumber
if (this.totals() && totals.getSegment('fee'))
. Saya lupa.Anda perlu menimpa checkout kelas model 'payment-service.js' . Anda dapat melakukan ini dengan cara berikut:
Jadi buat Kensium / DeliverySign / view / frontend / web / js / model / payment-service.js dan konten harus
Hapus pub / static / frontend / Magento / luma / en_US / Kensium_DeliverySign jika sudah ada
Jalankan perintah penyebaran berikut
setup php bin / magento: static-content: deploy
sumber
Anda juga harus membuat nama sesi pada Tanda Pengiriman. Jadi ini akan memuat perubahan keranjang pada setiap permintaan POST ke controller Anda. Pada dasarnya, simpul tindakan menunjukkan jalur pengontrol dan simpul bagian menentukan konten sisi klien mana yang harus diperbarui. Tembolok harus dibilas agar perubahan ini berlaku. Periksa
Checkout/etc/frontend/sections.xml
Misalnya asections.xml
inetc/frontend
sumber