답변:
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/
디렉토리 에있는 Magento 핵심 구성 요소를 참조하십시오
registration.php
놓치지 마세요이 외에도 registration.php
모듈에 파일이 있지만이 오류가 계속 발생하면 이는 registration.php
로드되지 않았고 Magento2가 모듈에 대해 알지 못했음을 의미합니다 .
모듈은 app/code/
(Magento2가 폴더에서 폴더를 검색 app/code/
하고 모듈을 찾습니다) 아래에 있어야 registration.php
하지만 모듈을 Composer 패키지로 빌드 한 경우 Composer의 vendor/
디렉토리에 있으며 Composer가 모듈 registration.php
(Magento) 을로드 하도록 속 여야 합니다 vendor/
자체적으로 검색하지 않습니다 ).
composer.json
에서 Magento2 모듈을 확인 하면 파일 을 참조 vendor/magento/module-*
하는 "autoload"
섹션 이 표시 registration.php
됩니다. 따라서 Composer는 모듈을 자동로드하여 모듈이 registration.php
있는 곳에서 Magento2를 "알려줍니다" .
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 및 웹 사용자가 디렉토리 및 파일을 읽을 수 있는지 확인하십시오.