Magento 2 Enterprise: Criar novo módulo no diretório de fornecedores

17

Eu tentei criar um novo módulo no vendordiretório no Magento Enterprise 2.0.0. O módulo não pôde ser carregado depois que eu executei o Magento setup:upgrade.

Se eu mover meus arquivos para o app/codediretório, o módulo será configurado com sucesso.

Para a edição Magento 2 Enterprise, todos os módulos estão no vendordiretório, mas a edição Community usa o app/codediretório. Gostaria de saber se é possível criar módulo personalizado no vendordiretório. Se sim, quais são as diferenças entre criar um módulo personalizado em 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>
Jason Yip
fonte
Você tem certeza de que precisa manter os módulos Enterprise no diretório de fornecedores?
Valery Statichnyi
Desculpe, não entendi o que você quis dizer, porque baixei o pacote Magento 2 Enterprise e todos os módulos foram armazenados no diretório do fornecedor, independentemente de ser o módulo principal ou o módulo Enterprise. Até o framework Magento é armazenado no diretório do fornecedor. Não havia diretório de aplicativo / código no pacote original.
21816 Jason Yip
Posso perguntar o que o item "psr-4" no seu compositor.json faz? Usamos empacotamento, mas temos nosso próprio GitLab, portanto também temos que codificar no fornecedor, mas meu código não é reconhecido. Posso instanciar minha classe a partir dos módulos principais do Magento, mas o Cron não funciona. Eu acho que tem a ver com o carregamento automático, meus arquivos não estão sendo lidos. Eu tenho aulaCompany\Reviews\Cron\Check de arquivo /vendor/company/Reviews/Cron/Check.phpe eu tenho um cron como Company\Reviews\Cron\Check, mas no banco de dados cron_scheduleapenas diz "Classe Empresa \ Comentários \ Cron \ seleção não existe"
Jacques

Respostas:

11

Módulos personalizados não devem ser desenvolvidos no vendordiretório Copie o conteúdo vendor/magento/magento2-basepara a raiz do projeto, crie customizado .gitignoreconforme descrito aqui e inicialize o novo repositório git. Em seguida, desenvolva o módulo personalizado em app/code/VendorName/ModuleName.

Mais tarde, quando você decidir distribuir o módulo, ele deverá ser empacotado e publicado . Quando alguém comprar / instalar seu módulo, ele será instalado automaticamente pelo compositor no vendordiretório do projeto.

Alex Paliarush
fonte