Magento2 CLI-Modul: Aktivierung gibt Fehler "Unbekannte Module"


23

In Magento2 habe ich ein einfaches benutzerdefiniertes Modul erstellt und möchte es über die CLI aktivieren:

bin/magento module:enable Vendorname_Modulename

Aber es gibt mir den folgenden Fehler:

Unbekannte Module: 'Vendorname_Modulename'

Das Modul und seine Dateien existieren in app/code/Vendorname/Modulename/

Natürlich habe ich die Caches gelöscht / deaktiviert, die Generierung gelöscht, Memcache (d) läuft nicht ...

Antworten:


27

registration.php fehlt

Anscheinend hat mein Vendorname_ModulenameModul das gefehltregistration.php . Ich verwende die neueste Magento2-Version von GitHub.

Jedes Modul muss sich im registrieren ComponentRegistrar. Ein registration.phpfür ein Modul typisches Element (im Stammverzeichnis Ihres Moduls) könnte Folgendes enthalten:

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

Sehen Sie auch alle Magento-Kernkomponenten in app/code/Magento/oder in Ihrem vendor/magento/Verzeichnis


registration.php NICHT vermisst

Wenn sich registration.phpin Ihrem Modul zwar eine Datei befindet, dieser Fehler jedoch weiterhin angezeigt wird, bedeutet dies, dass Ihreregistration.php nicht geladen wurden und Magento2 nichts über Ihr Modul weiß.

Ihr Modul sollte sich unter befinden app/code/(wo Magento2 Ordner durchsucht app/code/und Ihre Module findet registration.php). Wenn Sie Ihr Modul jedoch als Composer-Paket erstellt haben, befindet es sich im Verzeichnis von Composer vendor/und Sie müssen Composer dazu verleiten, die Module registration.php(Magento) zu laden sucht nicht invendor/ von alleine).

Wenn Sie irgendwelche Magento2 Moduls überprüfen würde composer.jsonin vendor/magento/module-*, erhalten Sie eine siehe "autoload"Abschnitt welche Hinweise die registration.phpDatei. So Composer wird Ihre Moduls AutoLoad- registration.phpdas wird „sagen“ Magento2 wo Ihr Modul befindet.

Dies ist ein Fragment aus dem Magento Checkout- Modul composer.json:

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

Wenn Sie Ihr Modul in einem separaten Repository haben und es über Composer laden, ist dies der richtige Weg. Wenn Sie es nicht in einem separaten Repository haben, gehört Ihr Modul nicht zu, vendor/sondern zu app/code/.


2
Ich habe den gleichen Fehler erhalten, als ich die Datei registration.php versehentlich unter app / code / Vendorname / Modulename / etc abgelegt habe
Mukesh

2
Gute Präsentation .. gut erklärt
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__);

Sie können es für jede Erweiterung verwenden, ohne etwas zu ändern.
Es funktioniert für jeden Erweiterungsstandort ( app/codeoder vendor) und für jeden Erweiterungstyp (Modul, Übersetzungswörterbuch).


Wow, dies macht das Vorhandensein dieser Datei absolut nutzlos, da es für jedes Modul gleich sein könnte. Wie wäre es damit für doppelten Code ... @Dimitry, du hast das Entwicklerteam von Magento2 geschlagen: P
7ochem

Dies funktioniert nicht für Themen.
Maddy

5

Hinzufügen zu: Wenn registration.phpNICHT fehlt

Überprüfen und bestätigen Sie, ob der Modulname im Modul etc/module.xml korrekt ist (nicht der Modulname im <sequence>Tag, falls vorhanden).

Bildbeschreibung hier eingeben


2
Gute ergänzung! Schön auch, dass du es mit einem Screenshot illustriert hast, der zeigt, um welches Feld es sich bei +1
7ochem am

0

Dies kann auch auftreten, wenn die Berechtigungen für das Modulverzeichnis und die Dateien nicht korrekt festgelegt wurden. Stellen Sie sicher, dass Verzeichnisse und Dateien von Magento und Webbenutzern gelesen werden können.


Magento sollte keine Schreibrechte für den Code Ihres Moduls benötigen
7ochem

Ich hatte diesen Fehler heute und das Wiederherstellen der Erlaubnis für den Modulordner auf 755 ließ diesen Fehler verschwinden, danke
Herve Tribouilloy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.