Magento 2:サードパーティのモジュールはどこにありますか?


22

Magento 2の最初の公式リリースをインストールしたばかりです。app/codeフォルダがなくなったことに驚きました。

app/code

これは、Webサイトからダウンロードされたバージョン、composerを介してインストールされたバージョンの両方でした。また、app/codeフォルダを手動で作成してphp bin/magento module:enable Pulsestorm_MyModuleからサンプルモジュールを有効にしようとすると、次のエラーが発生しました

 Unknown module(s): 'Pulsestorm_MyModule'

サードパーティのモジュールはどこにあると思われますか?答えが「ソースレポジトリであり、コンポーザ経由でインストールされる」の場合、モジュール開発者はどのようにしてMagento 2レポジトリに住むためにモジュールを構築する必要がありますか?

回答:


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リポジトリからモジュールをインストールする2つの方法:https : //gist.github.com/davidalger/77761f13d9752b117f35


以前に無効にした場合を除き、module:enableを使用する必要はありません。拡張機能を無効にするために設定できるパラメーターはありますか?
エイリック

@Eirikレポジトリから作曲家経由でインストールする場合は、作曲家がインストールします。これらのファイルを単にそこに配置する場合、それを有効にする必要があります。少なくとも私はのは、私はGAは、私は:) #phpworldで、ここでの話のためのスライドをアップ研磨されたように、右後に発見されたことをかなり確信している
davidalger

ローカルで作業していたので、まだリポジトリにプッシュしていませんでした。素晴らしい情報。
エイリック

6

アラン、彼らはまだ入りapp/codeます。registration.phpmodulenameフォルダーに次のものが含まれていることを確認してください。

<?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が入ってはいけないものなのか、それとも最終リリースになるようなものなのかは明確ではありませんでした。かなり明確になりました:)
アランストーム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.