Magento 2: Wohin gehen Module von Drittanbietern?

22

Ich habe gerade die erste offizielle Version von Magento 2 installiert. Ich war überrascht, dass der app/codeOrdner weg war

app/code

Dies war sowohl für die Version von der Website heruntergeladen und die installierte Version über Komponisten. Außerdem wurde beim Versuch, den app/codeOrdner manuell zu erstellen und anschließend ein Beispielmodul php bin/magento module:enable Pulsestorm_MyModulezu aktivieren, die folgende Fehlermeldung angezeigt

 Unknown module(s): 'Pulsestorm_MyModule'

Wo sollen Fremdmodule leben? Wenn die Antwort "Ein Quell-Repository und über Composer installiert" lautet, wie muss ein Modulentwickler seine Module strukturieren, um in einem Magento 2-Repository zu leben?

Alan Storm
quelle

Antworten:

18

Vorzugsweise werden 3PLs zusammen mit allem anderen im Anbieterverzeichnis gespeichert. Wie auch immer ... :) Wir alle wissen, dass es für fast jeden benutzerdefinierten Site-Build einen benutzerdefinierten Code gibt, und dieser IMO gehört in app / code / still. Ja, Sie können ein Modul immer noch über App / Code ausführen.

Unabhängig vom Speicherort sollten alle Module über eine composer.jsonund eine registration.phpDatei verfügen, mit denen das Modul in das System aufgenommen wird. Sie benötigen auch die etc/modules.xmlDatei. Das ist technisch alles, um ein Modul zu registrieren:

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

2 directories, 3 files

Um das Modul zum Laufen zu bringen, müssen Sie ausgeführt werden setup:upgradeund anschließend muss cache:flushdas System Ihre neue Komponente erkennen und laden:

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

Update: Zwei Methoden zum Installieren des Moduls aus dem öffentlichen GitHub-Repository: https://gist.github.com/davidalger/77761f13d9752b117f35

Davidalger
quelle
Ich musste das Modul nicht aktivieren, es sei denn, ich habe es zuvor deaktiviert. Gibt es einen Parameter, mit dem Sie die deaktivierte Erweiterung installieren können?
Eirik
@Eirik Wenn Sie von Repo über Composer installieren, wird dies vom Composer ausgeführt. Wenn Sie diese Dateien einfach dort ablegen, müssen Sie sie aktivieren. Wenigstens bin ich ziemlich sicher , dass das , was ich gefunden gleich nach der GA als ich Aufpolieren Folien für einen Vortrag hier bei #phpworld :)
davidalger
Vielen Dank, dass ich noch nicht zum Repo gedrängt habe, da ich vor Ort gearbeitet habe. Tolle Informationen.
Eirik
6

Alan, sie gehen immer noch rein app/code. registration.phpStellen Sie sicher, dass sich im Modulnamen-Ordner ein befindet, der Folgendes enthält:

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

Dann renne:

php bin/magento setup:upgrade

Wurde gerade mit einer neuen Magento 2 CE-Version getestet und funktioniert einwandfrei.

Eirik
quelle
Danke @Eirik, das war es auch schon. Es war nicht klar, ob registration.php etwas war, das nicht reingeschlüpft sein sollte, oder etwas, das die endgültige Veröffentlichung ermöglichen würde. Ziemlich klar jetzt :)
Alan Storm