回答:
registration.php
行方不明どうやら私のVendorname_Modulename
モジュールにはがありませんでしたregistration.php
。GitHubから最新のMagento2バージョンを実行しています。
すべてのモジュールはに自身を登録する必要がありComponentRegistrar
ます。registration.php
モジュールの一般的な(モジュールのルートにある)には、次のものが含まれます。
<?php
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Vendorname_Modulename',
__DIR__
);
app/code/Magento/
またはvendor/magento/
dir 内のMagentoコアコンポーネントも参照してください
registration.php
行方不明これに加えてregistration.php
、モジュールにファイルがあるのにこのエラーが引き続き発生する場合、これはregistration.php
ロードされておらず、Magento2がモジュールを認識していないことを意味します。
モジュールはapp/code/
(Magento2がフォルダーapp/code/
を検索してモジュールの場所を見つけるregistration.php
)の下にあるはずですが、モジュールをComposerパッケージとしてビルドしている場合は、Composerのvendor/
dirにあり、Composerにモジュールのregistration.php
(Magento vendor/
単独で検索しません)。
あなたはどのMagento2モジュールのチェックしたい場合composer.json
ではvendor/magento/module-*
、あなたが表示されます"autoload"
参照セクションregistration.php
ファイルを。そのため、Composerはモジュールを自動ロードし、モジュールが配置されている場所にMagento2 registration.php
を「通知」します。
これは、Magento Checkoutモジュールの一部composer.json
です:
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Magento\\Checkout\\": ""
}
}
モジュールが別のリポジトリにあり、composerを介してロードされている場合は、上記の方法を使用します。あなたが別のリポジトリにそれを持っていない場合は、お使いのモジュールが上属していませんvendor/
が、中にapp/code/
。
<?php
use Magento\Framework\Component\ComponentRegistrar;
$name = implode('_', array_map(
function($part) {
return implode(array_map('ucfirst', explode('-', $part)));
},
array_slice(explode(DIRECTORY_SEPARATOR, __DIR__), -2, 2)
));
ComponentRegistrar::register(ComponentRegistrar::MODULE, $name, __DIR__);
何も変更せずに任意の拡張機能に使用できます。
拡張機能の場所(app/code
またはvendor
)および拡張機能の種類(モジュール、翻訳辞書)に対して機能します。
registration.php
欠落していない場合モジュールのモジュール名etc/module.xml
が正しいかどうかを確認します(<sequence>
存在する場合、タグのモジュール名ではありません)
これは、モジュールのディレクトリとファイルのアクセス許可が正しく設定されていない場合にも発生する可能性があります。ディレクトリおよびファイルをmagentoおよびWebユーザーが読み取れるようにします。