Modulo CLI Magento2: abilita genera l'errore "Moduli sconosciuti"


23

In Magento2 ho creato un semplice modulo personalizzato e voglio abilitarlo dalla CLI:

bin/magento module:enable Vendorname_Modulename

Ma mi sta dando il seguente errore:

Modulo / i sconosciuto / i: "Vendorname_Modulename"

Il modulo e i suoi file esistono in app/code/Vendorname/Modulename/

Ovviamente ho cancellato / disabilitato le cache, cancellato generazione, Memcache (d) non in esecuzione ...

Risposte:


27

registration.php mancante

Apparentemente il mio Vendorname_Modulenamemodulo mancava il registration.php. Sto eseguendo l'ultima versione di Magento2 da GitHub.

Ogni modulo deve registrarsi in ComponentRegistrar. Un tipico registration.phpper un modulo (nella radice del modulo) potrebbe contenere:

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

Vedi anche qualsiasi componente principale di Magento nella app/code/Magento/tua vendor/magento/directory


registration.php NON mancante

Inoltre, se hai un registration.phpfile nel tuo modulo, ma stai ancora registration.phpriscontrando questo errore, questo significa che il tuo non è stato caricato e Magento2 non è a conoscenza del tuo modulo.

Il tuo modulo dovrebbe essere sotto app/code/(dove Magento2 cercherà le cartelle app/code/e troverà il tuo modulo registration.php), ma se hai costruito il tuo modulo come pacchetto Composer, sarà nella directory di Composer vendor/e dovrai ingannare Composer per caricare il tuo modulo registration.php(Magento non cerca vendor/da solo).

Se controlli qualsiasi modulo Magento2 composer.jsonin vendor/magento/module-*, vedrai una "autoload"sezione che fa riferimento al registration.phpfile. Quindi Composer caricherà automaticamente il tuo modulo registration.phpche "dirà" a Magento2 dove si trova il tuo modulo.

Questo è un frammento del modulo Magento Checkoutcomposer.json :

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

Se hai il tuo modulo in un repository separato e caricato tramite compositore, allora quanto sopra è la strada da percorrere. Se non lo hai in un repository separato, il tuo modulo non appartiene vendor/ma dentro app/code/.


2
Ho avuto lo stesso errore quando ho inserito il file registration.php nella cartella app / code / Vendorname / Modulename / etc per errore
Mukesh

2
Buona presentazione .. ben spiegato
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__);

Puoi usarlo per qualsiasi estensione senza cambiare nulla.
Funziona per qualsiasi posizione ( app/codeo vendor) di estensione e per qualsiasi tipo di estensione (modulo, dizionario di traduzione).


Wow, questo rende la presenza di questo file assolutamente inutile in quanto potrebbe essere la stessa per ogni modulo. Che ne dici di un codice duplicato ... @Dimitry, hai battuto il team di sviluppo di Magento2: P
ottobre

Questo non funzionerà per i temi.
Maddy,

5

Aggiunta a: se registration.phpNON mancante

Controllare e confermare se il nome del modulo nel modulo etc/module.xml è corretto (non il nome del modulo nel <sequence>tag, se presente)

inserisci qui la descrizione dell'immagine


2
Buona aggiunta! Bello anche che tu l'abbia illustrato con uno screenshot che mostri il campo esatto è circa +1
ottobre

0

Ciò può verificarsi anche se le autorizzazioni non sono impostate correttamente per la directory e i file del modulo. Assicurati che directory e file possano essere letti da magento e utente web.


Magento non dovrebbe aver bisogno delle autorizzazioni di scrittura sul codice del tuo modulo
7ochem,

Ho avuto questo errore oggi e il ripristino dell'autorizzazione per la cartella del modulo su 755 ha fatto sparire questo errore, grazie
Herve Tribouilloy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.