Errore irreversibile: impossibile creare un'istanza dell'interfaccia in Magento 2?


21

Come parte della creazione programmata del prodotto bundle in Magento 2. Sto ottenendo un errore al di sotto. Anche io ho rimosso var / cache e generazione.

Questa potrebbe essere una domanda duplicata, ma nessuna delle risposte funziona per questo problema.

Errore irreversibile: impossibile creare un'istanza dell'interfaccia Magento \ Catalog \ Api \ Data \ ProductExtensionInterface in \ ObjectManager \ Factory \ Dynamic \ Developer.php sulla riga 73

Utilizzato sotto il codice come riferimento del collegamento

$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);

Sto usando la gestione degli oggetti per scopi temporanei / rapidi, convertirò la gestione degli oggetti in un'ingiunzione del costruttore.

Chiunque può aiutarmi su questo problema.

Risposte:


21

Penso che non hai menzionato la preferenza nel tuo di.xml. Ho anche riscontrato lo stesso problema durante la creazione del modulo file xml di configurazione personalizzato.

Ho riscontrato il problema quando ho chiamato questo codice:

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

Di seguito è riportato il codice di esempio che ho aggiunto nel mio di.xml , potrebbe essere utile per ottenere riferimento:

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

Qui ho implementato l'interfaccia in Training\Test\Model\Configclasse e il mio getMyNodeInfo()metodo è definito in quel Modello.

Quindi in base alla preferenza definita in di.xml il codice ->get('Training\Test\Model\Config\ConfigInterface');creerà un oggetto di tipo Training\Test\Model\Config.


7

Non dovresti usare il ObjectManager.

Raccogli le tue dipendenze tramite _constructor.

Nel caso in cui la tua interfaccia non venga ancora caricata, controlla la tua di.xmle verifica che sia disponibile una preferenza.


@ David Lambauer Anche io ho usato il costruttore che sto ottenendo Impossibile creare un'istanza dell'interfaccia Magento \ Catalog \ Api \ Data \ ProductExtensionInterface in magento \ framework \ ObjectManager \ Factory \ Dynamic \ Developer.php sulla linea 73
Krishna ijjada

1
Hai aggiunto la fabbrica alle tue dichiarazioni d'uso? usa Magento \ Catalog \ Api \ Data \ ProductExtensionInterfaceFactory;
David Lambauer,

6

Ho lottato con questo e poi ho trovato una soluzione che ha funzionato per me nel documentario qui.

Assicurati di aggiungere la tua interfaccia come preferenza (corretta) in di.xml.


2
Il mio problema era che avevo accidentalmente inserito il file di.xml nella cartella etc / frontend invece della radice etc, ma la tua risposta mi ha portato a trovarlo.
KyleBunga
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.