registration.php brakujący
Najwyraźniej w moim Vendorname_Modulenamemodule brakowało registration.php. Korzystam z najnowszej wersji Magento2 od GitHub.
Każdy moduł musi się zarejestrować w ComponentRegistrar. Typowy registration.phpdla modułu (w katalogu głównym modułu) może zawierać:
<?php
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Vendorname_Modulename',
__DIR__
);
Zobacz także jakikolwiek główny komponent Magento w app/code/Magento/swoim vendor/magento/katalogu
registration.php NIE brakuje
Ponadto, jeśli masz registration.phpplik w module, ale nadal registration.phppojawia się ten błąd, oznacza to, że nie został załadowany, a Magento2 nie wie o twoim module.
Twój moduł powinien znajdować się pod app/code/(gdzie Magento2 przeszuka foldery app/code/i znajdzie moduł registration.php), ale jeśli zbudowałeś moduł jako pakiet Composer, będzie on w katalogu kompozytora vendor/i będziesz musiał oszukać Composer, aby załadował moduł registration.php(Magento nie wyszukuje vendor/samodzielnie).
Jeśli chcesz sprawdzić dowolny moduł Magento2 za composer.jsonin vendor/magento/module-*, zobaczysz "autoload"sekcję, która odwołuje się do registration.phppliku. Więc Composer automatycznie załaduje moduł, registration.phpktóry „powie” załaduje Magento2, gdzie znajduje się moduł.
To jest fragment modułu Magento Checkoutcomposer.json :
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Magento\\Checkout\\": ""
}
}
Jeśli masz swój moduł w osobnym repozytorium i ładujesz go przez kompozytora, to powyższe rozwiązanie jest odpowiednie. Jeśli nie masz go w oddzielnym repozytorium, oznacza to, że twój moduł nie należy do, vendor/ale do app/code/.