4
votes

Pourquoi le remplacement de ce fichier principal "Magento \ Quote \ Model \ ShippingMethodManagement.php" provoque des erreurs

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>


0 commentaires

4 Réponses :


0
votes

Vous devez faire: -

php bin/magento s:up

Et nettoyer le cache


0 commentaires

0
votes

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


0 commentaires

0
votes

É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
}


0 commentaires

0
votes

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


0 commentaires