घातक त्रुटि: Magento 2 में तत्काल इंटरफ़ेस नहीं कर सकता?


21

Magento 2 में प्रोग्राम के रूप में बंडल उत्पाद बनाने के भाग के रूप में। मैं नीचे त्रुटि प्राप्त कर रहा हूं। यहां तक ​​कि मैंने var / cache और Generation को हटा दिया।

यह एक डुप्लिकेट प्रश्न हो सकता है, लेकिन उत्तर में से कोई भी इस मुद्दे के लिए काम नहीं कर रहा है।

घातक त्रुटि: लाइन 73 पर मैगेंटो \ कैटलॉग \ Api \ Data \ ProductExtensionInterface in \ ObjectManager \ Factory \ Dynamic \ Developer.php को तत्काल नहीं कर सकता।

लिंक के संदर्भ के रूप में कोड के नीचे उपयोग किया जाता है

$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 यहां तक कि मैं निर्माता का इस्तेमाल किया मैं Magento \ सूची \ एपीआई \ Data \ ProductExtensionInterface Magento में \ ढांचे \ ObjectManager \ फैक्टरी \ गतिशील \ Developer.php इंटरफ़ेस लाइन 73 पर इन्स्तांत नहीं कर सकते हो रही है
कृष्णा ijjada

1
क्या आपने कारखाने को अपने उपयोग विवरणों में जोड़ा? Magento के \ कैटलॉग \ Api \ Data \ ProductExtensionInterfaceFactory का उपयोग करें;
डेविड लैम्बॉयर

6

मैं इससे जूझता रहा और फिर एक समाधान मिला जो मेरे लिए यहाँ वृत्तचित्र में काम आया ।

Di.xml में अपने इंटरफ़ेस को वरीयता (सही ढंग से) के रूप में जोड़ना सुनिश्चित करें।


2
मेरी समस्या यह थी कि मैंने दुर्घटना से आदि रूट के बजाय di.xml को etc / frontend फ़ोल्डर में रखा था, लेकिन आपके उत्तर से मुझे वह पता चला।
काइलबुंगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.