Magento 2 - ऑब्जेक्ट प्रबंधक सार वर्ग को तत्काल करने की कोशिश करता है। ( घातक गलती )


37

Magento 2 के साथ चारों ओर खेल रहा है, लेकिन एक समस्या में मैं अपने सिर को चारों ओर लपेट नहीं सकता। ऑब्जेक्ट मैनेजर एब्सट्रैक्ट क्लास को इंस्टेंट करने की कोशिश करता है, यह एक फेटल एरर देता है। किसी को पता है कि यह क्या कारण हो सकता है या मुझे सही दिशा में इशारा कर सकता है?

त्रुटि

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 di.xmlइसे बदलने के लिए उपयोग करता है , इस या कुछ को निष्पादित करता है, यह मामला नहीं था।

इसे पढ़ने का समय निकालने के लिए धन्यवाद। इस मुद्दे पर किसी भी मदद या इनपुट की सराहना की है।


क्या आप प्रश्न में अपना कोड पोस्ट कर सकते हैं?
मेरियस

क्या आप शायद कुछ अधिक विशिष्ट हो सकते हैं? संपूर्ण नियंत्रक वर्ग और तात्कालिक मॉडल विशाल हैं और उन्हें प्रश्न में जोड़ने से प्रारंभिक समस्या को समझना आसान नहीं होता है। एक्शन फंक्शन या कंस्ट्रक्टर पर्याप्त होगा?
rofavadeka

काफी उचित। अपने वर्ग का नाम पोस्ट करें, यह क्या बढ़ाता है, यह क्या लागू करता है और __constructआपके मॉडल की विधि।
मेरियस

जैसा कि अनुरोध किया गया है :) मॉडल का शीर्ष भाग। मुझे लगता है कि क्रिस के पास इसका समाधान है, यह परीक्षण करने और आपके पास वापस जाने के लिए। धन्यवाद मारियस।
14

हां। मुझे लगता है कि क्रिस मिल गया। :)
मैरियस

जवाबों:


109

यह तब हो सकता है जब मूल वर्ग की मौजूदा वैकल्पिक निर्भरता के बाद आपके उप-वर्ग ने नई निर्भरताएं जोड़ीं।

जनक से स्निपेट

    \Magento\Quote\Model\Cart\CurrencyFactory $currencyFactory,  // required
    JoinProcessorInterface $extensionAttributesJoinProcessor,    // required
    \Magento\Framework\Model\Resource\AbstractResource $resource = null,       //optional
    \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,  //optional
    array $data = [] //optional
)}

कोड कैसे बदल सकता है जो वैकल्पिक है

    \Magento\Quote\Model\Cart\CurrencyFactory $currencyFactory,  // required
    JoinProcessorInterface $extensionAttributesJoinProcessor,    // required
    \Magento\Framework\Model\Resource\AbstractResource $resource = null,       // required (even though it has a default value, because it is followed by parameters that don't have default values)
    int $x, // required
    \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,  // optional (still optional because there are no required parameters following it)
    array $data = [] // optional
)}

Magento 2 ऑब्जेक्ट मैनेजर किसी भी आवश्यक पैरामीटर को इंजेक्ट करने का प्रयास करेगा। तो ऐसा हो सकता है यदि आपने कंस्ट्रक्टर के अंत में एक आवश्यक पैरामीटर जोड़ा है।

आप वैकल्पिक के ऊपर किसी भी नए आवश्यक पैरामीटर को ले जाकर इसे ठीक कर सकते हैं।


1
क्रिस, आप एक बड़े पैमाने पर धन्यवाद अर्जित किया है! आपने मेरी समस्या का बड़ा समय हल कर दिया।
रफावडेका

और एक दूसरा बड़ा धन्यवाद। आई लव
यू

@ आपके द्वारा उपलब्ध कराए गए समाधान ने मेरी मदद की, धन्यवाद
मुकेश

महान व्याख्या!
हेनरी बुई

मेरा मुद्दा यह था कि phpStorm में ऑटो-पूर्ण का उपयोग करते समय यह = null भाग के साथ लाने में असफल रहा: /
OZZIE

0

कभी-कभी कुछ मॉड्यूल अपडेट किए जाते थे और अब तक / जनरेट किए गए संदर्भ अपडेट नहीं किए गए थे।

बस एक bin/magento setup:di:compileप्रयास करें और फिर से प्रयास करें।

(भुगतान मॉड्यूल और / चेकआउट अपडेट करते समय मेरे लिए काम नहीं किया गया था)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.