오류 메시지는 무엇입니까?
필수 매개 변수 'theme_dir'이 전달되지 않았습니다
Magento 2와 관련이 있습니까? 이 문제를 어떻게 해결할 수 있습니까?
오류 메시지는 무엇입니까?
필수 매개 변수 'theme_dir'이 전달되지 않았습니다
Magento 2와 관련이 있습니까? 이 문제를 어떻게 해결할 수 있습니까?
답변:
테마를 직접 제거하는 경우 (마 젠토 방식이 아님).
그런 다음이 단계를 수행하십시오.
컨텐츠를 삭제 app/design/frontend/<Vendor>
하십시오 (먼저 백업해야합니다).
폴더 var/view_preprocessed
& 의 모든 내용을 삭제하십시오 pub/static/frontend
.
theme
표로 이동 하여 작성된 테마에 대한 항목을 삭제하십시오.
그 후 ...
core_config_data
표로 이동하여 검색 theme
하면 design/theme/theme_id
기본 테마 ID 바꾸기 와 같은 경로 레코드 가 표시됩니다.
캐시 플러시 php bin/magento cache:flush
그 후에도 여전히 문제가 발생하면 알려주십시오.
theme
-table을 수정 했지만 core_config_data
값을 잊었습니다 .
setup:static-content:deploy
관리자 를 실행 한 후 UI로 돌아갔습니다.
pub/static/.htaccess
는 없었습니다. 감사
이 오류 메시지는 파일 시스템에 존재하지 않는 테마를 구성했음을 의미합니다 (더 이상).
대신 유효한 테마를 선택하여 쉽게 고칠 수 있습니다. 컨텐츠-> 구성으로 이동 하여 범위 (전역, 웹 사이트, store_view)를 선택하고 테마를 변경하십시오. 완료 한 후에는 컨텐츠-> 테마 에서도 제거해야합니다 .
이 문제는 CLI 명령과 같이 에뮬레이트 된 상태 일 때도 발생할 수 있습니다. 줄 바꿈 명령이 에뮬레이트 된 상태에서 실행 중이기 때문에 CLI에서 전자 메일을 보낼 수없는 상황이있었습니다.
$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
// In this section the email was sent
});
위의 예에서 전자 메일이 템플릿 디렉터리를 확인하려고하면 global/Magento/backend
존재하지 않는에 매핑됩니다 . 이 문제를 해결하려면 생성자에서 수동으로 추가해야했습니다.
/** @var \Magento\Framework\Component\ComponentRegistrarInterface $componentRegistrar */
// Make the admin theme global accessible for sending e-mails:
\Magento\Framework\Component\ComponentRegistrar::register(
'theme',
'global/Magento/backend',
$componentRegistrar->getPath('theme', 'adminhtml/Magento/backend')
);
이 수정 후 문제가 해결되었고 전자 메일을 보낼 수있었습니다.
최신 정보:
CLI를 사용하여 메일을 보내는 경우 에뮬레이션을 사용하는 것이 더 적절한 방법입니다. 예를 들면 다음과 같습니다.
/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
'frontend',
[$this->accountManagement, 'initiatePasswordReset'],
[
$customer->getEmail(),
AccountManagement::EMAIL_REMINDER,
$customer->getWebsiteId()
]
);
이렇게하면 더러운 작은 해킹이 필요하지 않습니다.
@hakre가 맞습니다. 나는 같은 오류가 발생했습니다 Required parameter 'theme_dir' was not passed
. 아래에서는 오류를 일으킨 방법에 대해 설명합니다.
app / design / frontend / MyVendorTheme2 / myThemeName2 디렉토리에 테마를 생성 한 다음 Magento 2 관리 브라우저 ( 스토리지 > 구성> 테마 설정> 일반> 디자인> 디자인 테마 ) 에서 " MyVendorTheme2-myThemeName2 " 테마를 선택하여 테마를 구성했습니다. . 그런 다음 " 새로운 테마가 포함 된 " myThemeName2 디렉토리를 다른 기존 공급 업체 폴더 " MyVendorTheme1 " app / design / frontend / MyVendorTheme1 / myThemeName2 아래로 옮기고 " MyVendorTheme2 "폴더에서 제거했습니다 . 그것은 전에했다. 나는 (자산을 컴파일 진행 즉 grunt clean
, grunt exec:myThemeName2
,grunt less:myThemeName2
)을 누른 다음 테마 하위 도메인 (예 : http : // myvirtualhostdomain : myport / myvendortheme1_mythemename2_magento2_quickstart / ) 에서 브라우저를 열었습니다 .
처음에는 지정되지 않은 오류가 발생했습니다.
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number:
로 이름 pub/errors/local.xml.sample
을 바꾸어 오류보고를 활성화 local.xml
하고 페이지를 새로 고쳤습니다. 그런 다음 오류가 표시되었습니다 Required parameter 'theme_dir' was not passed
.
이전과 현재 유효하지 않은 디자인 테마가 선택된 Magento 2 Admin 브라우저 ( Stores> Configuration> THEME SETTINGS> GENERAL> Design> Design Theme ) 로 돌아가서 오류를 해결 했습니다.
1-아래 명령을 사용하여 관리자 패널에서 테마를 식별하십시오.
n98-magerun2 dev:theme:list
2-명령을 실행하여 설치된 테마를 식별하십시오.
ls -lha app/design/frontend/MyThemePackage/
3- 아래 명령을 실행하여 존재하지 않는 테마를 만듭니다.
n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
아무것도 효과가 없다면 카테고리 섹션을 확인하는 것을 잊지 마십시오. 디자인 설정도 있습니다. 올바른 디자인 테마가 지정되어 있는지 확인하십시오. 제 경우에는 일부 범주에서만 오류가 발생했습니다.
아래 쿼리를 실행하여 사용하지 않는 테마를 DB에서 직접 제거 할 수 있습니다.
delete from theme where theme_path in ('unusedtheme');
사용하지 않는 테마는 사용되지 않은 테마이며 캐시를 클렌
경우에 따라 사용자 정의 테마를 올바르게 삭제하면이 오류가 발생합니다. 이러한 상황에서:
1) you have to delete that entry/row from 'theme' table.
2) set value 1 (1 for blank theme 2 for Luma what ever you want to set) against 'design/theme/theme_id'
사라진 페이지 오류를 새로 고칩니다.
문제를 해결했습니다. 필자의 경우 문제는 Magento2가 아니라 다음과 같이 시간이 지남에 따라 잘못된 작업이었습니다 .app / design / frontend / MyFolder / MyTheme에서 상대 경로를 만드는 테마를 만들고 Magento 2 온라인 설명서에 설명 된대로 등록했습니다. 그런 다음 테마를 취소하고 대신 적절한 명령을 사용하기로 결정했습니다. bin / magento theme : uninstall frontend / MyFolder / MyTheme 폴더를 직접 삭제했습니다. 데이터베이스가 만기 정보로 갱신되지 않았으므로 이는 좋은 조작이 아닙니다. 솔루션 : 데이터베이스 편집기를 phpmyadmin으로 사용하여 삭제 된 폴더에 해당하는 "테마"테이블의 레코드를 삭제하십시오. 이것이 도움이되기를 바랍니다!