Magento2 CLI modülü: etkinleştirmek “Bilinmeyen modül (ler)” hatası veriyor


23

Magento2'de basit bir özel modül kurdum ve CLI ile etkinleştirmek istiyorum:

bin/magento module:enable Vendorname_Modulename

Ama bana şu hatayı veriyor:

Bilinmeyen modül (ler): 'Vendorname_Modulename'

Modül ve dosyaları var app/code/Vendorname/Modulename/

Tabi ki önbellekleri temizledim / devre dışı bıraktım, nesli temizlendi, Memcache (d) çalışmıyor ...

Yanıtlar:


27

registration.php eksik

Görünüşe göre benim Vendorname_Modulenamemodülüm eksikti registration.php. GitHub'ın en yeni Magento2 sürümünü kullanıyorum.

Her modülün kendisini kaydettirmesi gerekir ComponentRegistrar. Bir registration.phpmodül için tipik (modülünüzün kökünde) şunlar olabilir:

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

Ayrıca, herhangi bir Magento çekirdek bileşenine app/code/Magento/veya vendor/magento/dizininize bakın


registration.php Eksik

Buna ek olarak, eğer registration.phpmodülünüzde bir DO dosya varsa , fakat hala bu hatayı registration.phpalıyorsanız , bunun anlamı yüklenmemiş demektir ve Magento2 modülünüzü bilmiyordur.

Modülünüzün altında app/code/(Magento2'nin klasörleri arayacağı app/code/ve modülünüzü bulacağı yer registration.php) altında olmalıdır , ancak modülünüzü bir Besteci paketi olarak kurduysanız, bu Besteci'nin dizininde olacak ve modülünüzü yüklemesi için Besteci'yi vendor/kandırmanız gerekecek registration.php(Magento vendor/kendi kendine arama yapmaz ).

Herhangi bir Magento2 modülünün composer.jsoniçinde olduğunu kontrol ederseniz , dosyaya başvuran vendor/magento/module-*bir "autoload"bölüm göreceksiniz registration.php. Böylece Composer, modülünüzün bulunduğu Magento2'ye "söyleyecek"registration.php olan modülünüzü otomatik olarak yükler.

Bu Magento Checkout modülünün bir parçası composer.json:

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

Modülünüzü ayrı bir havuzda tuttuysanız ve besteci ile yüklediyseniz, yukarıdaki yol budur. Ayrı bir havuzda yoksa, modülünüz ait vendor/değil app/code/.


2
Registration.php dosyasını app / code / Vendorname / Modulename / etc klasörüne yanlışlıkla yerleştirdiğimde aynı hatayı aldım
Mukesh

2
İyi sunum .. iyi açıklanmıştır
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__);

Herhangi bir şeyi değiştirmeden herhangi bir uzantı için kullanabilirsiniz.
Herhangi bir uzantı konumu ( app/codeveya vendor) ve herhangi bir uzantı türü (modül, çeviri sözlüğü) için çalışır.


Vay, bu, bu dosyanın varlığını her modül için aynı olabileceği için kesinlikle işe yaramaz hale getiriyor. Yinelenen kod için buna ne dersin ... @Dimitry, Magento2'nin dev ekibini
yendin

Bu temalar için işe yaramaz.
Maddy

5

Ekleyerek: eğer registration.phpeksik

Modül içindeki modül adının etc/module.xml doğru olup olmadığını kontrol edin ve onaylayın (varsa <sequence>etiketin içindeki modül adı değil )

görüntü tanımını buraya girin


2
İyi ek! Ayrıca, +1
7ochem

0

Bu, modül dizini ve dosyaları için izinler doğru ayarlanmadığında da oluşabilir. Dizin ve dosyaların magento ve web kullanıcısı tarafından okunabildiğinden emin olun.


Magento modülünüzün kodunda yazma iznine ihtiyaç
duymamalı

Bugün bu hatayı yaşadım ve modül klasörünün iznini 755'e geri
yükledim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.