Magento 2 Class * फैक्टरी मौजूद नहीं है


15

मैं एक प्लगइन स्थापित करने की कोशिश कर रहा था और मैंने var / पीढ़ी और var / cache / * को हटा दिया। मैंने MAGE_MODE की जाँच की है और मैं डेवलपर में हूँ, लेकिन अब जब मैं फ्रंट-एंड तक पहुँचता हूँ और एडमिन को मुझे यादृच्छिक त्रुटियां मिलती हैं, जैसे कि निम्न अर्थ: Class Magento\Customer\Model\CustomerFactory does not exist

वर्ग Magento \ Sales \ Model \ ResourceModel \ Report \ OrderFactory मौजूद नहीं है

कुछ कक्षाएं बनाई जा रही हैं, लेकिन सभी नहीं। मैंने फिर से कैश साफ़ करने की कोशिश की है, और पीढ़ी फ़ोल्डर लेकिन फिर मुझे बस वही त्रुटियां मिलती हैं।

कोई विचार?


1
var / पीढ़ी फ़ोल्डर पर अधिकार की जांच
मेरियस

यह कहता है drwxrwxrw- 5
jstrez77

मुझे कुछ समय के लिए var / generation फोल्डर को साफ़ करना था, पहले होम पेज पर जाएँ, क्लीन, फिर एडमिन, फिर लॉगिन, फिर क्लीन ... और इसने काम किया ... ?? मुझे यह समझ में नहीं आता है
jstrez77

निश्चित रूप से 'var / जनरेशन' फ़ोल्डर के भीतर अनुमतियाँ।
ट्रैविस वैन डर फ़ॉन्ट

जवाबों:


21

Magento 2 var/generationनिर्देशिका के अंदर फैक्टरी कक्षाएं उत्पन्न करता है । इसलिए, यदि उस निर्देशिका के साथ फ़ोल्डर अनुमति समस्या या फ़ोल्डर स्वामी समस्या है, तो फ़ैक्टरी वर्ग उत्पन्न नहीं किया जा सकता है और आपको ऐसी त्रुटि मिलती है।

जब आप var/generationडायरेक्टरी को क्लियर करते हैं और उसके लिए उपयुक्त अनुमति निर्धारित करते हैं तो इस त्रुटि को हल किया जाना चाहिए।

और देखें Magento 2 में कोड पीढ़ी


यह भी हो सकता है var/diया var/cache, devdocs.magento.com/guides/v2.2/install-gde/trouble/…
Yvan

10

मेरे लिए, मैंने var/generationफ़ोल्डर हटा दिया, फिर मैंने भाग लिया magento setup:di:compileजो सभी आवश्यक कक्षाएं उत्पन्न करता है।

(मेरे मामले में: तब मुझे कैश समस्या का सामना करना पड़ा, मैंने प्रारंभिक कैश फ़ोल्डर को हटा दिया।)

फिर इसने मेरी समस्या हल कर दी। चियर्स !!


1
फाइल के मालिक को अंत में बदलने की आवश्यकता है
मोशे बीरी

6

मैगेंटो में 2.2.2 और इसके बाद के संस्करण की तरह इस कोड जनरेशन पाथ को बदल दिया गया

<Magento root folder>/generated

इसलिए आपको इस फ़ोल्डर के लिए भी अनुमति की जाँच करनी होगी। आपको Magento के इंस्टॉलेशन निर्देशिका के रूट पर निम्नलिखित कमांड को चलाने की आवश्यकता है जो इस समस्या को हल करेगा:

sudo chmod -R 777 generated/

स्पष्ट कैश के रूप में अच्छी तरह से शुरू
हसन अली शहजाद

मेरे लिए इसका काम
बजे

1

निम्नलिखित आदेशों को निष्पादित करने की आवश्यकता है:

sudo php -f bin/magento setup:di:compile 

sudo rm -rf pub/static/*/*; sudo rm -rf var/*/*; 
sudo php -f bin/magento setup:static-content:deploy -f  

sudo php bin/magento cache:clean

साथ ही, उचित अनुमति की आवश्यकता है। यदि उत्पादन पर, आपको उचित अनुमतियों को निष्पादित करने की आवश्यकता है। लेकिन, स्थानीय मशीन पर, आप पूर्ण अनुमति चला सकते हैं:

sudo chmod -R 777 *

1

777 की अनुमति दें और स्वामित्व / उत्पन्न फ़ोल्डर के www-data में परिवर्तन करें और फिर कमांड sudo php bin/magento setup:di:compileक्लियर कैश चलाएं और अपनी समस्या हल करें


1

यह सिर्फ है <magento-root>/var/ फ़ोल्डर अनुमति मुद्दा है।

CLI मोड का उपयोग करके कमांड के नीचे निष्पादित करें

sudo chmod -R 777 var/

0

Magento 2 var/generationफ़ोल्डर में फ़ैक्टरी कक्षाएं बनाता है और यदि आप अपने में एक नया पैरामीटर जोड़ते हैं __construct()और यह फ़ैक्टरी क्लास मौजूद नहीं है तो Magento 2 उपरोक्त त्रुटि संदेश फेंकता है। भले ही आपके प्रश्न के लिए पहले से ही कुछ समाधान हैं, मैं आपको एक और समाधान सुझा सकता हूं जिसके लिए आपको अपना पीढ़ी फ़ोल्डर साफ़ करने की आवश्यकता नहीं है। फ़ैक्टरी कक्षाओं से संबंधित किसी भी परिवर्तन के बाद कृपया नीचे दिए गए आदेश का उपयोग करें:

bin/magento setup:di:compile

यह आदेश उत्पादन सर्वर पर अधिक उपयोगी हो सकता है।


-2

क्लास ... फैक्ट्री का मतलब नहीं है कि आपका मॉडल क्लास लोडेड नहीं है। चूंकि Magento 2 मॉड्यूलर प्रोग्रामिंग पर आधारित है, इसलिए हमें उस मॉडल वर्ग को निर्दिष्ट करने की आवश्यकता है जहां हम स्पष्ट रूप से उपयोग करना चाहते हैं। हम अपने मॉडल वर्ग को दो प्रकारों में उपयोग कर सकते हैं:

1. "उपयोग"

use Magento\Customer\Setup\CustomerSetupFactory;

public function __construct(CustomerSetupFactory $customerSetupFactory)
{
    $this->customerSetupFactory = $customerSetupFactory;
}
  1. सीधे

    public function __construct(Magento\Customer\Setup\CustomerSetupFactory $customerSetupFactory){
    
    $this->customerSetupFactory = $customerSetupFactory;
    
    }

जब आप Magento की तुलना में ब्राउज़र पर अपने प्लगइन के URL ( http://domain.com/your मॉड्यूल फ्रंटनाम) को हिट करते हैं, तो नीचे दिए गए अपने मॉड्यूल के लिए कोड उत्पन्न करें:

\var\generation\Your Vendor Directory\Your Module Directory\Controller
\var\generation\Your Vendor Directory\Your Module Directory\Model

आपके मामले में आपको "CustomerFactory" की जांच करने की आवश्यकता है और "OrderFactory" का उपयोग उपरोक्त प्रारूप के रूप में किया जाता है या नहीं।

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