registration.php
brakujący
Najwyraźniej w moim Vendorname_Modulename
module brakowało registration.php
. Korzystam z najnowszej wersji Magento2 od GitHub.
Każdy moduł musi się zarejestrować w ComponentRegistrar
. Typowy registration.php
dla 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.php
plik w module, ale nadal registration.php
pojawia 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.json
in vendor/magento/module-*
, zobaczysz "autoload"
sekcję, która odwołuje się do registration.php
pliku. Więc Composer automatycznie załaduje moduł, registration.php
któ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/
.
Możesz go używać do dowolnego rozszerzenia bez zmiany czegokolwiek.
Działa dla dowolnej lokalizacji rozszerzenia (
app/code
lubvendor
) i dowolnego typu rozszerzenia (moduł, słownik tłumaczeń).źródło
Dodanie do: jeśli
registration.php
nie brakujeSprawdź i potwierdź, czy nazwa modułu w module
etc/module.xml
jest poprawna (nie nazwa modułu w<sequence>
znaczniku, jeśli jest obecna)źródło
Może się to również zdarzyć, jeśli uprawnienia nie zostaną poprawnie ustawione dla katalogu i plików modułu. Upewnij się, że katalog i pliki mogą być odczytane przez magento i użytkownika sieci.
źródło