Magento 2: dove vanno i moduli di terze parti?


22

Ho appena installato la prima versione ufficiale di Magento 2. Sono stato sorpreso di scoprire che la app/codecartella non c'era più

app/code

Questo era sia per la versione scaricata dal sito Web sia per la versione installata tramite compositore. Inoltre, quando ho provato a creare manualmente la app/codecartella e quindi fare un php bin/magento module:enable Pulsestorm_MyModuleper abilitare un modulo di esempio, ho ricevuto il seguente errore

 Unknown module(s): 'Pulsestorm_MyModule'

Dove dovrebbero vivere i moduli di terze parti? Se la risposta è "un repository di origine e installato tramite compositore", in che modo uno sviluppatore di moduli deve strutturare i propri moduli per vivere in un repository Magento 2?

Risposte:


18

Preferibilmente i 3PL vivranno nella directory del fornitore insieme a tutto il resto. Tuttavia ... :) Sappiamo tutti che in genere esiste un codice personalizzato scritto per quasi tutti i siti personalizzati costruiti lì, e questo IMO appartiene in app / codice / ancora. Sì, puoi comunque eseguire un modulo da app / codice.

Tutti i moduli, indipendentemente dalla posizione, dovrebbero avere un composer.jsone un registration.phpfile che vengono utilizzati per ottenere il modulo nel sistema. È inoltre necessario il etc/modules.xmlfile. Questo è, tecnicamente, tutto ciò che serve per registrare un modulo:

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

2 directories, 3 files

Per far funzionare il modulo, è necessario eseguire setup:upgradee quindi cache:flushil sistema sia in grado di riconoscere e caricare il nuovo componente:

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

Aggiornamento: due metodi per installare il modulo dal repository GitHub pubblico: https://gist.github.com/davidalger/77761f13d9752b117f35


Non ho bisogno di modulo: abilitare se non l'ho disabilitato in precedenza. Esiste un parametro che puoi impostare per installare l'estensione disabilitata?
Eirik,

@Eirik Se esegui l'installazione dal repository tramite il compositore, viene eseguito dal compositore. Se si posizionano semplicemente questi file lì, è quando è necessario abilitarlo. Almeno sono abbastanza sicuro che è quello che ho trovato subito dopo il GA mentre stavo lucidando le diapositive per un discorso qui su #phpworld :)
davidalger,

grazie mille non ho ancora spinto al repository mentre stavo lavorando localmente. Ottima informazione
Eirik,

6

Alan, entrano ancora app/code. Assicurati di avere un registration.phpnella cartella modulename contenente quanto segue:

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

Quindi eseguire:

php bin/magento setup:upgrade

Appena testato su una nuova versione di Magento 2 CE e funziona correttamente.


Grazie @Eirik, era proprio così. Non era chiaro se registration.php fosse qualcosa che era scivolato dentro e che non avrebbe dovuto, o qualcosa che avrebbe reso la versione finale. Abbastanza chiaro ora :)
Alan Storm,
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.