J'ai écrit un module simple pour remplacer cette classe de modèle principale, mais sur le frontend, il affiche ce message d'erreur:
"Erreur fatale: Erreur de type non interceptée: Argument 3 transmis à Magento \ Quote \ Model \ Quote \ ShippingAssignment \ ShippingProcessor :: __ construct () doit être une instance de Magento \ Quote \ Model \ ShippingMethodManagement, instance de shipping \ module \ Model \ ShippingMethodManagement \ Interceptor ..... "
VOICI MON contenu de fichier '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"> <preference for="Magento\Quote\Model\ShippingMethodManagement" type="shipping\module\Model\ShippingMethodManagement" /> </config>
4 Réponses :
Vous devez faire: -
php bin/magento s:up
Et nettoyer le cache
Vous devez exécuter les commandes ci-dessous après avoir obtenu l'autorisation complète:
php bin/magento cache:flush chmod -R 777 var generated
Si l'erreur persiste, vérifiez si vous êtes en mode développeur avec cette commande:
rm -rf var generated
Étendez votre classe en utilisant le chemin principal du fichier comme indiqué ci-dessous.
Dans ** shipping \ module \ Model **
chmod -R 777 var generated php bin/magento setup:di:compile php bin/magento cache:flush
N'oubliez pas d'exécuter les commandes suivantes après la modification.
class ShippingMethodManagement extends Magento\Quote\Model\ShippingMethodManagement { //You can write your custom functionality here }
Après avoir ajouté un nouvel argument dans le constructeur, vous devez recréer l'interpréteur. Exécutez donc la commande di: compile
php bin/magento setup:di:compile