Неустранимая ошибка: Не удается создать экземпляр интерфейса в Magento 2?


21

Как часть программного продукта создания пакета в Magento 2. Я получаю ошибку ниже. Даже я удалил var / cache и генерацию.

Это может быть повторяющийся вопрос, но ни один из ответов не работает для этой проблемы.

Неустранимая ошибка: не удается создать экземпляр интерфейса Magento \ Catalog \ Api \ Data \ ProductExtensionInterface в \ ObjectManager \ Factory \ Dynamic \ Developer.php в строке 73

Используется ниже код как ссылка ссылки

$productExtension = $objectManager->create(\Magento\Catalog\Api\Data\ProductExtensionInterface::class);
$option = $objectManager->create(\Magento\Bundle\Api\Data\OptionInterface::class);
$option->setTitle('Size');
$option->setType('radio');
$option->setRequired(true);
$option->setPosition(1);
//$option->setProductLinks($links);
$productExtension->setBundleOptions([$option]);
$_product->setExtensionAttributes($productExtension);

Я использую диспетчер объектов для временной / быстрой цели, преобразую диспетчер объектов в указатель конструктора.

Любой может помочь мне в этом вопросе.

Ответы:


21

Я думаю, что вы не упомянули предпочтение в вашем di.xml. Я также столкнулся с той же проблемой, когда я создавал пользовательский конфигурационный файл xml.

Я получил проблему, когда я назвал этот код:

$testConfig = $this->_objectManager->get('Training\Test\Model\Config\ConfigInterface');
$myNodeInfo = $testConfig->getMyNodeInfo();

Ниже приведен пример кода, который я добавил в свой di.xml , возможно, он поможет вам получить ссылку:

<preference for="Training\Test\Model\Config\ConfigInterface" type="Training\Test\Model\Config" />

Здесь я реализовал интерфейс в Training\Test\Model\Configклассе, и мой getMyNodeInfo()метод определен в этой модели.

Таким образом, на основании предпочтения, определенного в di.xml, код ->get('Training\Test\Model\Config\ConfigInterface');создаст объект типа Training\Test\Model\Config.


7

Вы не должны использовать ObjectManager.

Соберите свои зависимости через _constructor.

Если ваш интерфейс по-прежнему не будет загружен, проверьте di.xmlи подтвердите, что предпочтение доступно.


@ Дэвид Lambauer Даже я использовал конструктор я получаю не могу Instantiate интерфейс Magento \ Каталог \ Api \ Data \ ProductExtensionInterface в Magento \ Framework \ ObjectManager \ Factory \ Dynamic \ Developer.php на линии 73
Кришна ijjada

1
Вы добавили фабрику в свои заявления об использовании? использовать Magento \ Catalogue \ Api \ Data \ ProductExtensionInterfaceFactory;
Дэвид Ламбауэр

6

Я боролся с этим и затем нашел решение, которое работало для меня в документации здесь.

Обязательно добавьте ваш интерфейс в качестве предпочтения (правильно) в di.xml.


2
Моя проблема заключалась в том, что я случайно поместил di.xml в папку etc / frontend, а не в корневой каталог etc, но ваш ответ привел меня к этому.
KyleBunga
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.