Magento2 CLI মডিউল: সক্ষম ত্রুটি দেয় "অজানা মডিউল (গুলি)"


23

Magento2 এ আমি একটি সাধারণ কাস্টম মডিউল তৈরি করেছি এবং এটি সিএলআই দ্বারা সক্ষম করতে চাই:

bin/magento module:enable Vendorname_Modulename

তবে এটি আমাকে নিম্নলিখিত ত্রুটি দিচ্ছে:

অজানা মডিউল (গুলি): 'ভেন্ডরনেম_মডুলনেম'

মডিউল এবং এর ফাইলগুলি বিদ্যমান app/code/Vendorname/Modulename/

অবশ্যই আমি ক্যাশে সাফ / অক্ষম করেছি, প্রজন্মকে সাফ করেছি, মেমকেচে (ডি) চলছে না ...

উত্তর:


27

registration.php অনুপস্থিত

সম্ভবত আমার Vendorname_Modulenameমডিউলটি অনুপস্থিত ছিল registration.php। আমি গিটহাবের সর্বশেষতম ম্যাজেন্টো 2 সংস্করণটি চালাচ্ছি।

প্রতিটি মডিউল নিজেই নিবন্ধন করতে হবে ComponentRegistrarregistration.phpমডিউলটির জন্য একটি আদর্শ (আপনার মডিউলটির মূলের মধ্যে) থাকতে পারে:

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

app/code/Magento/আপনার vendor/magento/ডিয়ারের মধ্যে যে কোনও ম্যাজেন্টো কোর উপাদানও দেখুন


registration.php অনুপস্থিত

registration.phpএগুলি ছাড়াও, যদি আপনার মডিউলে কোনও ফাইল থাকে তবে আপনি এখনও এই ত্রুটিটি পাচ্ছেন, এর অর্থ হ'ল আপনার registration.phpলোড করা হয়নি এবং ম্যাজেন্টো 2 আপনার মডিউল সম্পর্কে জানেন না।

আপনার মডিউলটি নীচে থাকা উচিত app/code/(যেখানে ম্যাজেন্টো 2 ফোল্ডারগুলিতে সন্ধান করবে app/code/এবং আপনার মডিউলটি সন্ধান করবে registration.php) তবে আপনি যদি সুরকার প্যাকেজ হিসাবে আপনার মডিউলটি তৈরি করে থাকেন তবে এটি সুরকারের vendor/দির মধ্যে থাকবে এবং আপনাকে মডিউলটির লোডিংয়ে সুরকারকে ট্রিক করতে হবে registration.php(ম্যাজেন্টো) vendor/নিজে থেকে অনুসন্ধান করে না )।

যদি আপনি কোন Magento2 মডিউল এর পরীক্ষা চান তাহলে composer.jsonমধ্যে vendor/magento/module-*, আপনি একটি দেখতে পাবেন "autoload"অধ্যায় যা রেফারেন্স registration.phpফাইল। সুতরাং সুরকার আপনার মডিউলটি অটোলোড registration.phpকরবে যা আপনার মডিউলটি কোথায় অবস্থিত Magento2 "" বলবে

এটি ম্যাজেন্টো চেকআউট মডিউলটির একটি খণ্ড 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) এবং যে কোনও এক্সটেনশন ধরণের (মডিউল, অনুবাদ অভিধান) জন্য কাজ করে।


বাহ, এটি এই ফাইলটির উপস্থিতি একেবারেই অকেজো হিসাবে উপস্থাপন করে কারণ এটি প্রতিটি মডিউলটির জন্য একই হতে পারে। সদৃশ কোডের জন্য এটি কীভাবে ... @ দিমিত্রি, আপনি ম্যাজেন্টো 2 এর দেব দলকে পরাজিত করেছেন: পি
ওচেম

এটি থিমগুলির জন্য কাজ করবে না।
ম্যাডি

5

যোগ করা: registration.phpঅনুপস্থিত থাকলে

মডিউলটির মডিউলের নামটি etc/module.xml সঠিক কিনা তা পরীক্ষা করে নিশ্চিত করুন ( <sequence>উপস্থিত থাকলে ট্যাগে মডিউলটির নাম নেই)

এখানে চিত্র বর্ণনা লিখুন


2
ভাল সংযোজন! এছাড়াও খুব সুন্দর যে আপনি এটির সঠিক ক্ষেত্রটি দেখিয়ে একটি স্ক্রিনশট দিয়ে চিত্রিত করেছেন এটি প্রায় +1
7 ই

0

মডিউল ডিরেক্টরি এবং ফাইলগুলির জন্য অনুমতিগুলি সঠিকভাবে সেট না করা থাকলে এটিও ঘটতে পারে। ডিরেক্টরি এবং ফাইলগুলি ম্যাজেন্টো এবং ওয়েব ব্যবহারকারীর দ্বারা পড়া যেতে পারে তা নিশ্চিত করুন।


ম্যাজেন্টোর আপনার মডিউলের কোডে লেখার অনুমতিগুলির প্রয়োজন হবে না
সেচ

আমার আজ এই ত্রুটি ছিল এবং মডিউল ফোল্ডারের 755 এ অনুমতি পুনরুদ্ধার করার ফলে এই ত্রুটিটি ক্ষীণ হয়ে যায়, ধন্যবাদ
হেরভে ট্রিবিউলয়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.