Magento 2 Enterprise: Crear nuevo módulo en el directorio de proveedores

17

Traté de crear un nuevo módulo en el vendordirectorio en Magento Enterprise 2.0.0. El módulo no se pudo cargar después de ejecutar el Magento setup:upgrade.

Si muevo mis archivos al app/codedirectorio, el módulo se configurará correctamente.

Para la edición Enterprise de Magento 2, todos los módulos están en el vendordirectorio, pero la edición Community usa el app/codedirectorio. Me pregunto si es posible crear un módulo personalizado en el vendordirectorio. En caso afirmativo, ¿cuáles son las diferencias entre crear un módulo personalizado en app/codey 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
fuente
¿Está seguro de que necesita mantener los módulos Enterprise en el directorio de proveedores?
Valery Statichnyi
Lo siento, no entiendo lo que quiere decir porque descargué el paquete Magento 2 Enterprise y todos los módulos se almacenaron en el directorio de proveedores, sin importar si es un módulo central o un módulo Enterprise. Incluso el marco Magento se almacena en el directorio de proveedores. No existía un directorio de aplicación / código en el paquete original.
Jason Yip
¿Puedo preguntar qué hace el elemento "psr-4" en tu composer.json? Usamos empaques pero tenemos nuestro propio GitLab, por lo que también tenemos que codificar en el proveedor, sin embargo, mi código no es reconocido. Puedo crear instancias de mi clase desde los módulos principales de Magento, pero Cron no funciona. Creo que tiene que ver con la carga automática, mis archivos no se están leyendo. Tengo una clase Company\Reviews\Cron\Checken el archivo /vendor/company/Reviews/Cron/Check.phpy tengo un cronjob como Company\Reviews\Cron\Checkpero en la base de datos cron_schedulesolo dice "Class Company \ Reviews \ Cron \ Check no existe"
Jacques

Respuestas:

11

Los módulos personalizados no deben desarrollarse en el vendordirectorio. Copie el contenido de vendor/magento/magento2-basela raíz del proyecto, cree un contenido personalizado .gitignorecomo se describe aquí e inicialice el nuevo repositorio de git. Luego desarrolle un módulo personalizado debajo app/code/VendorName/ModuleName.

Más tarde, cuando decida distribuir el módulo, tendrá que ser empaquetado y publicado . Cuando alguien compre / instale su módulo, el compositor lo instalará automáticamente en el vendordirectorio de su proyecto.

Alex Paliarush
fuente