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


21

Як частина створення програмного продукту в Magento 2. Я опускаюся нижче помилки. Навіть я видалив var / cache та покоління.

Це може бути повторне запитання, але жодна відповідь не працює для цього питання.

Фатальна помилка: Не вдається створити інтерфейс Magento \ Каталог \ Api \ Дані \ 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. Я також зіткнувся з тією ж проблемою, коли створював спеціальний модуль файлів config 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і підтвердіть, чи є параметр доступним.


@ Девід Ламбауер Навіть я використовував конструктор, я отримую не вдається створити інтерфейс Magento \ Каталог \ Api \ Дані \ ProductExtensionInterface в magento \ Framework \ ObjectManager \ Factory \ Dynamic \ Developer.php на лінії 73
Krishna ijjada

1
Ви додали завод до заяв про використання? використовувати Magento \ Каталог \ Api \ Дані \ ProductExtensionInterfaceFactory;
Девід Ламбауер

6

Я боровся з цим, а потім знайшов рішення, яке працювало на мене в документації тут.

Не забудьте додати інтерфейс як перевагу (правильно) у di.xml.


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