Играя с Magento 2, но столкнуться с проблемой, я не могу обернуть голову вокруг. Диспетчер объектов пытается создать экземпляр класса Abstract, что приводит к фатальной ошибке. Кто-то знает, что может вызвать это, или указывает мне правильное направление?
Ошибка
Fatal error: Cannot instantiate abstract class Magento\Framework\Model\Resource\AbstractResource in /lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php on line 75
Проблема
Мой модуль имеет модель, которая расширяет \Magento\Quote\Model\Quote
. Конструктор этой модели имеет следующую строку, вставляющую это:
\Magento\Framework\Model\Resource\AbstractResource $resource = null,
,
Контроллер, который создает экземпляр модели, расширяет \Magento\Backend\App\Action
и использует ее $this->_objectManager->create()
для создания экземпляра модели.
Я не могу обернуть голову, если я создаю экземпляр модели Magento, она просто работает, но если я создаю экземпляр моей модели, она пытается создать экземпляр этого абстрактного класса, выдавая ошибку выше. Что говорит менеджер объектов, чтобы сделать это и как я могу решить мою проблему?
Моей первой мыслью было, что Magento использует, di.xml
чтобы заменить это, выполнить это или что-то еще, но это не тот случай.
Спасибо, что нашли время, чтобы прочитать это. Любая помощь или вклад по этому вопросу приветствуется.
источник
__construct
метод вашей модели.Ответы:
Это может произойти, если ваш подкласс добавил новые зависимости после существующих необязательных зависимостей родительского класса.
Фрагмент от родителя
Как код может изменить то, что необязательно
Диспетчер объектов Magento 2 попытается ввести любые необходимые параметры. Так что это может произойти, если вы добавите обязательный параметр в конце конструктора.
Вы можете исправить это, переместив любой новый обязательный параметр выше необязательных.
источник
Иногда какой-то модуль обновлялся, а ссылки в / сгенерированном еще не обновлялись.
Просто сделайте
bin/magento setup:di:compile
и попробуйте снова.(У меня работало при обновлении платежного модуля и / checkout не загружался)
источник