Tout d'abord, je veux donner quelques captures d'écran pour comprendre mon problème.
Maintenant, je veux ajouter du code associé ici.
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;
}
}
Veuillez trouver ci-dessous pour plus de détails
https://github.com/sivajik34/Delivery-Signature-Magento2
Mon observation est que l' DeliverySignConfigProvider
objet n'appelle pas lorsque vous cliquez sur le bouton suivant , seulement son appel lorsque vous rechargez la page . Pouvez-vous m'aider à ce sujet?
magento2
checkout
knockoutjs
sivakumar
la source
la source
Plugin/Checkout/Model/ShippingInformationManagement.php
.Réponses:
Je pense que nous n'avons pas besoin de recharger le résumé total. Parce que, quand cliquez sur le Next bouton, Magento fera une demande (API)
V1/carts/mine/shipping-information
pour recalculer les totaux et la production des données des totaux à nos modèles.Donc, si nous voulons vérifier les frais, nous devons vérifier la réponse
total_segments
Lorsque vous cliquez sur À côté de l'étape de paiement, il est demandé de définir les informations d'expédition fournisseur / magento / module-checkout / view / frontend / web / js / view / shipping.js
Cette demande recalculera les totaux.
Dans votre cas, dans notre modèle html, il devrait avoir une
isDisplayed()
fonction:Kensium / DeliverySign / view / frontend / web / template / checkout / cart / totals / fee.html
Vérifier la
isDisplayed()
fonction:Kensium / DeliverySign / view / frontend / web / js / view / checkout / cart / totals / fee.js
Cette fonction vérifiera le
fee
segment des totaux de la réponse.Je fais un git pull ici .
REMARQUE: assurez-vous que vos frais sont calculés correctement. À l'étape du paiement, veuillez vérifier que la réponse a nos frais.
la source
if (this.totals() && totals.getSegment('fee'))
. J'ai oublié.Vous devez remplacer la classe de modèle de paiement «service de paiement.js» . Vous pouvez procéder de la manière suivante:
Créez donc Kensium / DeliverySign / view / frontend / web / js / model / payment-service.js et le contenu devrait être
Supprimer pub / static / frontend / Magento / luma / en_US / Kensium_DeliverySign s'il existe déjà
Exécuter la commande de déploiement suivante
configuration de php bin / magento: contenu statique: déployer
la source
Vous devez également créer un nom de session sur Delivery Sign. Donc, cela rechargerait les modifications du panier sur chaque demande POST sur votre contrôleur. Fondamentalement, le nœud d'action indique le chemin du contrôleur et le nœud de section définit le contenu côté client à mettre à jour. Les caches doivent être vidées pour que ce changement s'applique. Vérifiez
Checkout/etc/frontend/sections.xml
par exemple unsections.xml
dansetc/frontend
la source