Magento 2 Enterprise: Utwórz nowy moduł w katalogu dostawcy

17

Próbowałem utworzyć nowy moduł w vendorkatalogu w Magento Enterprise 2.0.0. Nie można załadować modułu po uruchomieniu Magento setup:upgrade.

Jeśli przeniosę moje pliki do app/codekatalogu, moduł zostanie pomyślnie skonfigurowany.

W przypadku wersji Magento 2 Enterprise wszystkie moduły są w vendorkatalogu, ale wersja Community używa app/codekatalogu. Zastanawiam się, czy można stworzyć własny moduł w vendorkatalogu. Jeśli tak, jakie są różnice między tworzeniem niestandardowego modułu w app/codei 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>
Jason Yip
źródło
Czy na pewno musisz przechowywać moduły Enterprise w katalogu dostawców?
Valery Statichnyi,
Przepraszam, nie rozumiem, co masz na myśli, ponieważ pobrałem pakiet Magento 2 Enterprise, a wszystkie moduły zostały zapisane w katalogu dostawcy, niezależnie od tego, czy jest to moduł podstawowy czy moduł Enterprise. Nawet środowisko Magento jest przechowywane w katalogu dostawców. W oryginalnym pakiecie nie istniał katalog aplikacji / kodu.
Jason Yip,
Czy mogę zapytać, co robi element „psr-4” w pliku composer.json? Używamy opakowań, ale mamy własny GitLab, więc musimy również kodować u dostawcy, jednak mój kod nie jest rozpoznawany. Mogę utworzyć moją klasę z modułów podstawowych Magento, ale Cron nie działa. Myślę, że ma to związek z automatycznym ładowaniem, moje pliki nie są odczytywane. Mam klasę Company\Reviews\Cron\Checkw pliku /vendor/company/Reviews/Cron/Check.phpi mam cronjob jak, Company\Reviews\Cron\Checkale w bazie danych cron_schedulejest napisane „Class Company \ Reviews \ Cron \ Check nie istnieje”
Jacques

Odpowiedzi:

11

Nie należy opracowywać modułów niestandardowych w vendorkatalogu. Skopiuj zawartość vendor/magento/magento2-basedo katalogu głównego projektu, utwórz niestandardowy .gitignoreopisany tutaj i zainicjuj nowe repozytorium git. Następnie opracuj moduł niestandardowy pod app/code/VendorName/ModuleName.

Później, kiedy zdecydujesz się na dystrybucję modułu, będzie on musiał zostać spakowany i opublikowany . Kiedy ktoś kupi / zainstaluje twój moduł, zostanie on automatycznie zainstalowany przez kompozytora w vendorkatalogu swojego projektu.

Alex Paliarush
źródło