Magento 2:第三方模块在哪里?


22

我刚刚安装了Magento 2的第一个正式版本。我很惊讶地发现该app/code文件夹不见了。

app/code

这是两个从网站上下载的版本,并通过作曲家安装的版本。另外,当我尝试手动创建app/code文件夹,然后执行php bin/magento module:enable Pulsestorm_MyModule以启用示例模块时,出现以下错误

 Unknown module(s): 'Pulsestorm_MyModule'

第三方模块应该放在哪里?如果答案是“源存储库并通过composer安装”,那么模块开发人员将如何构造其模块以驻留在Magento 2存储库中?

Answers:


18

最好3PL将与其他所有内容一起存在于供应商目录中。但是……:)我们都知道,通常为那里的每个自定义站点构建编写自定义代码,而此IMO仍属于app / code /。是的,您仍然可以从应用程序/代码运行模块。

所有模块,无论位于何处,都应有一个composer.json和一个registration.php文件,用于将模块插入系统。您还需要该etc/modules.xml文件。从技术上讲,这就是注册模块所需的全部时间:

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

2 directories, 3 files

要启动并运行该模块,您需要先运行setup:upgrade,然后cache:flush系统才能识别并加载新组件:

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

更新:从公共GitHub存储库安装模块的两种方法:https : //gist.github.com/davidalger/77761f13d9752b117f35


除非我以前禁用了它,否则我不需要module:enable。您可以设置一个参数来禁用禁用扩展吗?
Eirik

@Eirik如果您是通过composer从repo安装的,则由composer完成。如果只是将这些文件放在此处,则需要启用它。至少我很确定那是我在大会之后就发现的内容,因为我正在#幻灯片世界上的幻灯片上进行演讲:)
davidalger 2015年

非常感谢,因为我在本地工作,所以还没有要求回购。很棒的信息。
Eirik

6

艾伦,他们仍然进去app/code。确保registration.php在modulename文件夹中有一个包含以下内容的:

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

然后运行:

php bin/magento setup:upgrade

刚刚在新的Magento 2 CE版本上进行了测试,并且可以正常工作。


谢谢@Eirik,的确如此。尚不清楚registration.php是不是应该包含的东西,还是可以最终发布的东西。现在很清楚了:)
艾伦·风暴
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.