Magento 2: ¿A dónde van los módulos de terceros?

22

Acabo de instalar la primera versión oficial de Magento 2. Me sorprendió descubrir que la app/codecarpeta había desaparecido

app/code

Esto fue tanto para la versión descargada del sitio web como para la versión instalada a través del compositor. Además, cuando intenté crear manualmente la app/codecarpeta y luego hacer una php bin/magento module:enable Pulsestorm_MyModulepara habilitar un módulo de muestra, recibí el siguiente error

 Unknown module(s): 'Pulsestorm_MyModule'

¿Dónde se supone que viven los módulos de terceros? Si la respuesta es "un repositorio fuente e instalado a través del compositor", ¿cómo necesita un desarrollador de módulos estructurar sus módulos para vivir en un repositorio Magento 2?

Alan Storm
fuente

Respuestas:

18

Preferiblemente, los 3PL vivirán en el directorio de proveedores junto con todo lo demás. Sin embargo ... :) Todos sabemos que generalmente hay un código personalizado escrito para casi todas las compilaciones de sitios personalizados, y esta IMO pertenece en la aplicación / código / todavía. Sí, aún puede ejecutar un módulo desde la aplicación / código.

Todos los módulos, independientemente de su ubicación, deben tener un composer.jsony un registration.phparchivo que se utilizan para llevar el módulo al sistema. También necesitas el etc/modules.xmlarchivo. Esto es, técnicamente, todo lo que se necesita para registrar un módulo:

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

2 directories, 3 files

Para poner en funcionamiento el módulo, debe ejecutarlo setup:upgradey luego, cache:flushpara que el sistema reconozca y cargue su nuevo componente:

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

Actualización: Dos métodos para instalar el módulo desde el repositorio público de GitHub: https://gist.github.com/davidalger/77761f13d9752b117f35

davidalger
fuente
No he necesitado un módulo: habilítelo a menos que lo haya deshabilitado previamente. ¿Hay algún parámetro que pueda establecer para instalar la extensión deshabilitada?
Eirik
@Eirik Si está instalando desde un repositorio a través de Composer, lo hace Composer. Si simplemente coloca estos archivos allí, es cuando necesita habilitarlos. Al menos estoy bastante seguro de que eso es lo que encontré justo después de la Asamblea General, ya que estaba puliendo diapositivas para una charla aquí en #phpworld :)
davidalger
muchas gracias todavía no he presionado al repositorio ya que estaba trabajando localmente. Gran informacion.
Eirik
6

Alan, todavía entran app/code. Asegúrese de tener una registration.phpcarpeta en el nombre del módulo que contenga lo siguiente:

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

Entonces corre:

php bin/magento setup:upgrade

Acabo de probarlo en la nueva versión de Magento 2 CE y funciona correctamente.

Eirik
fuente
Gracias @Eirik, eso fue todo. No estaba claro si el registro.php era algo que se deslizó dentro de lo que no debería, o algo que haría el lanzamiento final. Bastante claro ahora :)
Alan Storm