Magento2 CLI मॉड्यूल: सक्षम त्रुटि देता है "Unkown मॉड्यूल (ओं)"


23

Magento2 में मैंने एक सरल कस्टम मॉड्यूल बनाया है और इसे CLI द्वारा सक्षम करना चाहता हूं:

bin/magento module:enable Vendorname_Modulename

लेकिन यह मुझे निम्नलिखित त्रुटि दे रहा है:

अज्ञात मॉड्यूल (ओं): 'Vendorname_Modulename'

मॉड्यूल और यह फाइलें मौजूद हैं app/code/Vendorname/Modulename/

बेशक मैंने साफ़ / अक्षम कैशे, साफ़ की हुई पीढ़ी, मेम्चे (डी) नहीं चल रहा है ...

जवाबों:


27

registration.php लापता

जाहिर तौर पर मेरा Vendorname_Modulenameमॉड्यूल गायब था registration.php। मैं GitHub से नवीनतम Magento2 संस्करण चला रहा हूं।

हर मॉड्यूल को खुद को रजिस्टर करना होता है ComponentRegistrar। एक registration.phpमॉड्यूल के लिए एक विशिष्ट (आपके मॉड्यूल की जड़ में) शामिल हो सकता है:

<?php
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
    ComponentRegistrar::MODULE,
    'Vendorname_Modulename',
    __DIR__
);

इसके अलावा app/code/Magento/या अपने vendor/magento/डायर में किसी भी Magento कोर घटक देखें


registration.php गायब नहीं है

इसके अलावा, यदि आपके पास registration.phpअपने मॉड्यूल में एक फ़ाइल है, लेकिन आपको अभी भी यह त्रुटि मिल रही है, तो इसका मतलब है कि आपका registration.phpलोड नहीं हुआ था और Magento2 को आपके मॉड्यूल के बारे में नहीं पता है।

आपका मॉड्यूल नीचे होना चाहिए app/code/(जहां Magento2 फ़ोल्डर खोजेगा app/code/और आपके मॉड्यूल को खोजेगा registration.php), लेकिन अगर आपने अपना मॉड्यूल कंपोजर पैकेज के रूप में बनाया है, तो यह संगीतकार की vendor/डायर में होगा और आपको अपने मॉड्यूल को लोड करने में कंपोजर को ट्रिक करने की आवश्यकता होगी registration.php(Magento अपने आप में खोज नहीं करता vendor/है)।

आप किसी भी Magento2 मॉड्यूल के जाँच चाहते हैं तो composer.jsonमें vendor/magento/module-*, आप एक देखेंगे "autoload"अनुभाग जो संदर्भ registration.phpफ़ाइल। तो संगीतकार आपके मॉड्यूल को ऑटोलैड registration.phpकरेगा जो कि " मात्सेंटो 2 " को बताएगा जहां आपका मॉड्यूल स्थित है।

यह Magento चेकआउट मॉड्यूल से एक टुकड़ा है composer.json:

"autoload": {
    "files": [
        "registration.php"
    ],
    "psr-4": {
        "Magento\\Checkout\\": ""
    }
}

यदि आपके पास एक अलग रिपॉजिटरी में अपना मॉड्यूल है और संगीतकार के माध्यम से लोड किया गया है, तो ऊपर जाने का रास्ता है। यदि आपके पास एक अलग रिपॉजिटरी में नहीं है, तो आपका मॉड्यूल संबंधित नहीं है, vendor/लेकिन अंदर है app/code/


2
मुझे वही त्रुटि मिली जब मैं पंजीकरण / ऍफ़पी फ़ाइल को ऐप / कोड / वेंडोर्नेम / मोडुलनेम / आदि फ़ोल्डर के तहत ग़लती से रखता हूँ
मुकेश

2
अच्छी प्रस्तुति .. अच्छी तरह से समझाया गया
devst3r

6
<?php
use Magento\Framework\Component\ComponentRegistrar;
$name = implode('_', array_map(
    function($part) {
        return implode(array_map('ucfirst', explode('-', $part)));
    },
    array_slice(explode(DIRECTORY_SEPARATOR, __DIR__), -2, 2)
));
ComponentRegistrar::register(ComponentRegistrar::MODULE, $name, __DIR__);

आप बिना किसी बदलाव के इसे किसी भी एक्सटेंशन के लिए उपयोग कर सकते हैं।
यह किसी भी एक्सटेंशन लोकेशन ( app/codeया vendor) और किसी भी एक्सटेंशन टाइप (मॉड्यूल, ट्रांसलेशन डिक्शनरी) के लिए काम करता है।


वाह, यह इस फाइल की उपस्थिति को बिल्कुल बेकार कर देता है क्योंकि यह हर मॉड्यूल के लिए समान हो सकता है। डुप्लिकेट कोड के लिए कैसे ... @Dimitry, आपने Magento2 की देव टीम को हराया है: P
7ochem

यह थीम के लिए काम नहीं करेगा।
मैडी

5

जोड़ना: यदि registration.phpअनुपलब्ध है

जाँचें और पुष्टि करें कि क्या मॉड्यूल का नाम मॉड्यूल etc/module.xml में सही है ( <sequence>यदि मौजूद नहीं है तो मॉड्यूल का नाम टैग में है )

यहाँ छवि विवरण दर्ज करें


2
अच्छा जोड़! यह भी अच्छा है कि आपने इसे एक स्क्रीनशॉट के साथ चित्रित किया है जिसमें सटीक फ़ील्ड दिखाया गया है जो +1 के बारे में है
7ochem

0

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


Magento को अपने मॉड्यूल के कोड
7ochem

मेरे पास आज यह त्रुटि थी और 755 में मॉड्यूल फ़ोल्डर की अनुमति को बहाल करने से यह त्रुटि गायब हो गई, धन्यवाद
हेर्व ट्रिब्यूयॉयल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.