Magento 2 Enterprise: crea un nuovo modulo nella directory del fornitore


17

Ho provato a creare un nuovo modulo nella vendordirectory in Magento Enterprise 2.0.0. Non è stato possibile caricare il modulo dopo aver eseguito Magento setup:upgrade.

Se sposto i miei file nella app/codedirectory, il modulo verrà impostato correttamente.

Per Magento 2 Enterprise Edition, tutti i moduli sono nella vendordirectory ma l'edizione Community utilizza la app/codedirectory. Mi chiedo se è possibile creare un modulo personalizzato nella vendordirectory. Se sì, quali sono le differenze tra la creazione di un modulo personalizzato in app/codee vendor.

vendor/Test/Testing/registration.php

<?php

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Test_Testing',
    __DIR__ );

vendor/Test/Testing/composer.json

{   "name": "test/testing",   "description": "Testing",   "require": {
    "php": "~5.5.0|~5.6.0|~7.0.0",
    "magento/framework": "100.0.*"   },   "type": "magento2-module",   "version": "0.1.0",   "license": [
    "proprietary"   ],   "autoload": {
    "files": [ "registration.php" ],
    "psr-4": {
      "Test\\Testing\\": ""
    }   } }

vendor/Test/Testing/etc/module.xml

<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Test_Testing" setup_version="0.1.0">
    </module> </config>

Sei sicuro di dover mantenere i moduli Enterprise nella directory del fornitore?
Valery Statichnyi,

Spiacenti, non capisco cosa intendi perché ho scaricato il pacchetto Magento 2 Enterprise e tutti i moduli sono stati archiviati nella directory del fornitore, indipendentemente dal fatto che si tratti del modulo principale o del modulo Enterprise. Anche il framework Magento è archiviato nella directory del fornitore. Non esiste alcuna directory app / codice nel pacchetto originale.
Jason Yip,

Potrei chiederti cosa fa l'elemento "psr-4" nel tuo composer.json? Usiamo il packaging ma abbiamo il nostro GitLab, quindi dobbiamo codificare anche nel fornitore, tuttavia il mio codice non è riconosciuto. Posso creare un'istanza della mia classe dai moduli core di Magento ma Cron non funziona. Penso che abbia a che fare con il caricamento automatico, i miei file non vengono letti. Ho una classe Company\Reviews\Cron\Checkin file /vendor/company/Reviews/Cron/Check.phpe ho un cronjob come Company\Reviews\Cron\Checkma nel database cron_scheduledice solo "Class Company \ Reviews \ Cron \ Check non esiste"
Jacques

Risposte:


11

I moduli personalizzati non devono essere sviluppati nella vendordirectory. Copia il contenuto dalla vendor/magento/magento2-baseradice del progetto, crea personalizzato .gitignorecome descritto qui e inizializza il nuovo repository git. Quindi sviluppare il modulo personalizzato sotto app/code/VendorName/ModuleName.

Successivamente, quando deciderai di distribuire il modulo, dovrà essere impacchettato e pubblicato . Quando qualcuno acquisterà / installerà il tuo modulo, verrà automaticamente installato dal compositore nella vendordirectory del suo progetto.

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.