Magento 2: Para onde vão os módulos de terceiros?

22

Acabei de instalar o primeiro lançamento oficial do Magento 2. Fiquei surpreso ao descobrir que a app/codepasta havia sumido

app/code

Isso foi para a versão baixada do site e a versão instalada via compositor. Além disso, quando tentei criar manualmente a app/codepasta e, em seguida, execute um php bin/magento module:enable Pulsestorm_MyModulepara ativar um módulo de amostra, recebi o seguinte erro

 Unknown module(s): 'Pulsestorm_MyModule'

Onde os módulos de terceiros devem morar? Se a resposta for "um repositório de origem e instalado via compositor", como um desenvolvedor de módulos precisa estruturar seus módulos para viver em um repositório Magento 2?

Alan Storm
fonte

Respostas:

18

De preferência, 3PLs viverão no diretório do fornecedor, juntamente com todo o resto. No entanto ... :) Todos sabemos que normalmente existe um código personalizado escrito para quase todas as compilações de sites personalizadas existentes, e esse IMO pertence a app / code / still. Sim, você ainda pode executar um módulo a partir do aplicativo / código.

Todos os módulos, independentemente da localização, devem ter um composer.jsone um registration.phparquivo que são usados ​​para inserir o módulo no sistema. Você também precisa do etc/modules.xmlarquivo. Tecnicamente, isso é o suficiente para registrar um módulo:

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

2 directories, 3 files

Para colocar o módulo em funcionamento, você precisa executar setup:upgradee, cache:flushem seguida, o sistema deve reconhecer e carregar seu novo componente:

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

Atualização: dois métodos para instalar o módulo do repositório público do GitHub: https://gist.github.com/davidalger/77761f13d9752b117f35

davidalger
fonte
Eu não precisava do módulo: enable, a menos que eu o tenha desativado anteriormente. Existe um parâmetro que você pode definir para instalar a extensão desabilitada?
Eirik
@Eirik Se você estiver instalando a partir do repo via compositor, é feito pelo compositor. Se você simplesmente colocar esses arquivos lá, é quando precisará ativá-lo. Pelo menos eu tenho certeza que é o que eu encontrei logo após a GA como eu estava polindo-se lâminas para uma conversa aqui na #phpworld :)
davidalger
muito obrigado ainda não empurrou para repo como eu estava trabalhando localmente. Ótima informação.
Eirik
6

Alan, eles ainda entram app/code. Verifique se você possui um registration.phpna pasta nome do módulo que contém o seguinte:

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

Então corra:

php bin/magento setup:upgrade

Acabei de testar o Magento 2 CE e funciona corretamente.

Eirik
fonte
Obrigado @Eirik, foi isso mesmo. Não ficou claro se o registration.php foi algo que escorregou que não deveria ter, ou algo que faria o lançamento final. Muito claro agora :)
Alan Storm