Magento 2: Dokąd zmierzają moduły innych firm?

22

Właśnie zainstalowałem pierwszą oficjalną wersję Magento 2. Zaskoczyło mnie, że app/codefolder zniknął

app/code

Dotyczyło to zarówno wersji pobranej ze strony internetowej, jak i wersji zainstalowanej za pomocą kompozytora. Ponadto, gdy próbowałem ręcznie utworzyć app/codefolder, a następnie zrobić, php bin/magento module:enable Pulsestorm_MyModuleaby włączyć moduł przykładowy, dostałem następujący błąd

 Unknown module(s): 'Pulsestorm_MyModule'

Gdzie powinny mieszkać moduły stron trzecich? Jeśli odpowiedź brzmi „repozytorium źródłowe i zainstalowane przez kompozytora”, to jak deweloper modułów musi tak zbudować swoje moduły, aby działały w repozytorium Magento 2?

Alan Storm
źródło

Odpowiedzi:

18

Najlepiej, jeśli 3PL będą znajdować się w katalogu dostawców wraz ze wszystkim innym. Jednak… :) Wszyscy wiemy, że zwykle jest napisany niestandardowy kod dla prawie każdej niestandardowej witryny, a ten IMO należy do app / code / still. Tak, nadal możesz uruchomić moduł z aplikacji / kodu.

Wszystkie moduły, niezależnie od lokalizacji, powinny mieć plik composer.jsonoraz registration.phpplik, który służy do wprowadzenia modułu do systemu. Potrzebujesz również etc/modules.xmlpliku. To technicznie wszystko, czego potrzeba, aby zarejestrować moduł:

$ tree app/code/Alger/
app/code/Alger/
└── Skeleton
    ├── composer.json
    ├── etc
       └── module.xml
    └── registration.php

2 directories, 3 files

Aby uruchomić moduł, musisz go uruchomić, setup:upgradea następnie cache:flushsystem rozpoznaje i ładuje nowy komponent:

$ bin/magento module:enable Foo_Bar
$ bin/magento setup:upgrade -q && bin/magento cache:flush -q

Aktualizacja: Dwie metody instalacji modułu z publicznego repozytorium GitHub: https://gist.github.com/davidalger/77761f13d9752b117f35

davidalger
źródło
Nie potrzebowałem modułu: włącz, chyba że wcześniej go wyłączyłem. Czy istnieje parametr, który można ustawić, aby zainstalować rozszerzenie wyłączone?
Eirik,
@Eirik Jeśli instalujesz z repozytorium przez kompozytora, robi to kompozytor. Jeśli po prostu umieścisz tam te pliki, wtedy musisz je włączyć. Przynajmniej jestem całkiem pewien, że właśnie to znalazłem zaraz po GA, gdy polerowałem slajdy na rozmowę tutaj na #phpworld :)
davidalger
dzięki bardzo nie naciskałem jeszcze na repo, ponieważ pracowałem lokalnie. Świetna informacja.
Eirik,
6

Alan, wciąż wchodzą app/code. Upewnij się, że masz registration.phpfolder modulename zawierający następujące elementy:

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

Następnie uruchomić:

php bin/magento setup:upgrade

Właśnie przetestowano na nowej wersji Magento 2 CE i działa poprawnie.

Eirik
źródło
Dziękuję @Eirik, to było rzeczywiście to. Nie było jasne, czy rejestracja.php była czymś, co wpadło w coś, czego nie powinno, lub czymś, co sprawi, że będzie to ostateczne wydanie. Teraz całkiem jasne :)
Alan Storm,