Magento2: Fatal error: Cannot instantiate abstract class Magento\Framework\Model\ResourceModel\AbstractResource

Nachdem ich gerade Easytemplate auf Magento 2 portiere hatte ich einige Zeit Probleme mit der Meldung "Fatal error: Cannot instantiate abstract class Magento\Framework\Model\ResourceModel\AbstractResource". Hier wollte das Object-Manager von Magento ein Abstractes-Model instanzieren und mir wurde überhaupt gar nicht klar warum.

Nachdem meine Erfahrungen mit dem Object-Manager aber noch sehr gering sind versuchte ich die di.xml anders zu konfiguieren. Was natürlich unsinn ist. Die Sache ist eine Ecke einfacher.

Wenn wir in ein Model eine weitere Dependency aufnehmen:

public function __construct(
        \Magento\Framework\Model\Context $context,
        \Magento\Framework\Registry $registry,
        \Webguys\Easytemplate\Model\Config $config,
        \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
        \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
        array $data = [] ) { .. }
    )

Müssen wir das immer vor den optionalen Parametern tun. Der Object-Manager übergibt nämlich hier nur die Pflicht Parameter.
Der Trick bestand also darin die \Webguys\Easytemplate\Model\Config $config über den ersten Parameter mit einem Default zu schieben.

 

 



Ein Beitrag von Tobias Vogt
Tobias's avatar

Tobias Vogt arbeitet seit 2008 mit Magento und ist seit 2011 durch Magento zertifizierter Entwickler. Seit 2016 ist er Mitgründer und CTO bei der connect-io GmbH, einer Magento-Agentur mit Sitz im idyllischen Paderborn-Salzkotten. Er gehört zum Gründer-Team der Webguys und ist seit November 2011 Bachelor of Science (Wirtschaftsinformatik). Sie erreichen Ihn per E-Mail unter tobi@webguys.de.

Alle Beiträge von Tobias

Dein Kommentar