Magento 2 Enterprise:在供应商目录中创建新模块


17

我试图vendor在Magento Enterprise 2.0.0的目录中创建新模块。我运行了Magento后无法加载该模块setup:upgrade

如果将文件移动到app/code目录中,则模块将成功建立。

对于Magento 2企业版,所有模块都在vendor目录中,而社区版使用app/code目录。我想知道是否可以在vendor目录中创建自定义模块。如果是,则在app/code和中创建自定义模块有什么区别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>

您确定需要将Enterprise模块保留在供应商目录中吗?
Valery Statichnyi 2015年

抱歉,我不明白您的意思,因为我下载了Magento 2 Enterprise软件包,并且所有模块都存储在供应商目录中,无论是核心模块还是Enterprise模块。甚至Magento框架都存储在供应商目录中。原始软件包中没有app / code目录。
Jason Yip

我可能会问composer.json中的“ psr-4”项是做什么的?我们使用包装,但是我们有自己的GitLab,因此我们也必须在供应商中进行编码,但是我的代码未被识别。我可以从Magento核心模块实例化我的课程,但Cron无法正常工作。我认为这与自动加载有关,未读取我的文件。我Company\Reviews\Cron\Check在文件中有一个类,/vendor/company/Reviews/Cron/Check.php并且有一个cronjob,Company\Reviews\Cron\Check但是在数据库中cron_schedule它只是说“ Class Company \ Reviews \ Cron \ Check不存在”
Jacques

Answers:


11

自定义模块不应在vendor目录中开发。将内容从复制vendor/magento/magento2-base到项目的根目录,.gitignore此处所述创建自定义项,并初始化新的git存储库。然后在下开发自定义模块app/code/VendorName/ModuleName

以后,当您决定分发模块时,必须将其打包和发布。当有人购买/安装您的模块时,作曲家会自动将其安装到vendor他们项目的目录中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.