Magento 2 Enterprise: créer un nouveau module dans le répertoire des fournisseurs

17

J'ai essayé de créer un nouveau module dans le vendorrépertoire de Magento Enterprise 2.0.0. Le module n'a pas pu être chargé après avoir exécuté le Magento setup:upgrade.

Si je déplace mes fichiers dans le app/coderépertoire, le module sera correctement configuré.

Pour l'édition Magento 2 Enterprise, tous les modules sont dans le vendorrépertoire mais l'édition communautaire utilise le app/coderépertoire. Je me demande s'il est possible de créer un module personnalisé dans le vendorrépertoire. Si oui, quelles sont les différences entre la création d'un module personnalisé dans app/codeet 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
la source
Êtes-vous sûr de devoir conserver les modules Enterprise dans le répertoire des fournisseurs?
Valery Statichnyi
Désolé, je ne comprends pas ce que vous voulez dire car j'ai téléchargé le package Magento 2 Enterprise et tous les modules ont été stockés dans le répertoire du fournisseur, qu'il s'agisse du module principal ou du module Enterprise. Même le framework Magento est stocké dans le répertoire du fournisseur. Aucun répertoire app / code n'existait dans le package d'origine.
Jason Yip
Puis-je demander ce que fait l'élément "psr-4" dans votre composer.json? Nous utilisons des emballages mais nous avons notre propre GitLab, nous devons donc également coder chez le fournisseur, mais mon code n'est pas reconnu. Je peux instancier ma classe à partir des modules de base de Magento mais Cron ne fonctionne pas. Je pense que cela a à voir avec le chargement automatique, mes fichiers ne sont pas lus. J'ai une classe Company\Reviews\Cron\Checkdans le fichier /vendor/company/Reviews/Cron/Check.phpet j'ai un cronjob comme Company\Reviews\Cron\Checkmais dans la base de données, cron_scheduleil dit simplement que "Class Company \ Reviews \ Cron \ Check n'existe pas"
Jacques

Réponses:

11

Les modules personnalisés ne doivent pas être développés dans le vendorrépertoire. Copiez le contenu de vendor/magento/magento2-baseà la racine du projet, créez un personnalisé .gitignorecomme décrit ici et initialisez le nouveau référentiel git. Développez ensuite le module personnalisé sous app/code/VendorName/ModuleName.

Plus tard, lorsque vous déciderez de distribuer le module, il devra être conditionné et publié . Lorsque quelqu'un achètera / installera votre module, il sera automatiquement installé par composer dans le vendorrépertoire de leur projet.

Alex Paliarush
la source