Jouer avec Magento 2 mais rencontrer un problème, je ne peux pas envelopper ma tête. Le gestionnaire d'objets tente d'instancier la classe abstraite, ce qui donne une erreur fatale. Est-ce que quelqu'un sait ce qui pourrait causer ceci ou me diriger dans la bonne direction?
L'erreur
Fatal error: Cannot instantiate abstract class Magento\Framework\Model\Resource\AbstractResource in /lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php on line 75
Le problème
Mon module a un modèle qui étend le \Magento\Quote\Model\Quote
. Le constructeur de ce modèle a la ligne suivante injectant ceci:
\Magento\Framework\Model\Resource\AbstractResource $resource = null,
.
Le contrôleur qui instancie le modèle étend le \Magento\Backend\App\Action
et utilise $this->_objectManager->create()
pour instancier le modèle.
Ce que je ne peux pas comprendre, c'est que si j'instancie le modèle Magento, cela fonctionne, mais si j'instancie mon modèle, il tente d'instancier cette classe abstraite en lançant l'erreur ci-dessus. Qu'est-ce qui dit au gestionnaire d'objets de faire cela et comment puis-je résoudre mon problème?
Ma première pensée a été que Magento utilise le di.xml
pour remplacer ceci, exécuter ceci ou quelque chose, ce n'était pas le cas.
Merci d'avoir pris le temps de lire ceci. Toute aide ou contribution sur cette question est appréciée.
la source
__construct
méthode de votre modèle.Réponses:
Cela peut arriver si votre sous-classe a ajouté de nouvelles dépendances après les dépendances facultatives existantes de la classe parente.
Extrait du parent
Comment le code peut modifier ce qui est optionnel
Le gestionnaire d’objets de Magento 2 essaiera d’injecter les paramètres requis. Cela peut donc arriver si vous avez ajouté un paramètre requis à la fin du constructeur.
Vous pouvez résoudre ce problème en déplaçant tout nouveau paramètre requis au-dessus des paramètres facultatifs.
la source
Parfois, certains modules étaient mis à jour et les références sous / générées n'étaient pas encore mises à jour.
Il suffit de faire un
bin/magento setup:di:compile
et essayez à nouveau.(Travaillé pour moi lors de la mise à jour d'un module de paiement et / checkout ne s'est pas chargé)
la source