필수 매개 변수 'theme_dir'이 전달되지 않았습니다


61

오류 메시지는 무엇입니까?

필수 매개 변수 'theme_dir'이 전달되지 않았습니다

Magento 2와 관련이 있습니까? 이 문제를 어떻게 해결할 수 있습니까?


테마 폴더의 권한을 변경하여이 문제를 해결했습니다.
taoufiqaitali

모든 솔루션을 시도하고 magento를 다시 설치했습니다
Robert Sinclair

답변:


86

테마를 직접 제거하는 경우 (마 젠토 방식이 아님).

그런 다음이 단계를 수행하십시오.

1 단계 : 파일 작업

컨텐츠를 삭제 app/design/frontend/<Vendor>하십시오 (먼저 백업해야합니다).

폴더 var/view_preprocessed& 의 모든 내용을 삭제하십시오 pub/static/frontend.

2 단계 : DB 운영

theme표로 이동 하여 작성된 테마에 대한 항목을 삭제하십시오.

그 후 ...

core_config_data표로 이동하여 검색 theme하면 design/theme/theme_id기본 테마 ID 바꾸기 와 같은 경로 레코드 가 표시됩니다.

3 단계 : 캐시 플러시

캐시 플러시 php bin/magento cache:flush

그 후에도 여전히 문제가 발생하면 알려주십시오.


감사. 테마를 삭제할 때도 같은 문제가있었습니다. 데이터베이스에 남은 잔재를 삭제하는 것을 잊지 마십시오. theme-table을 수정 했지만 core_config_data값을 잊었습니다 .
Giel Berkers

@GielBerkers : Welcome :)
Kaushal Suthar

@KaushalSuthar 이것은 전혀 작동하지 않았고 관리자는 텍스트 형식으로 갔다. 그런 다음 setup:static-content:deploy관리자 를 실행 한 후 UI로 돌아갔습니다.
Ashwani Shukla

@AshwaniShukla : 당신은 과정에서 실수를했을 수도 있습니다 ...
Kaushal Suthar

@KaushalSuthar 내가 한 유일한 실수 pub/static/.htaccess는 없었습니다. 감사
Ashwani Shukla

28

이 오류 메시지는 파일 시스템에 존재하지 않는 테마를 구성했음을 의미합니다 (더 이상).

대신 유효한 테마를 선택하여 쉽게 고칠 수 있습니다. 컨텐츠-> 구성으로 이동 하여 범위 (전역, 웹 사이트, store_view)를 선택하고 테마를 변경하십시오. 완료 한 후에는 컨텐츠-> 테마 에서도 제거해야합니다 .

상점 테마 변경

참고 문헌


테마 디렉토리에 적절한 권한이없는 경우에도 마찬가지입니다.
Nathan Moinvaziri

권한은 일부 Magento 스크립트 AFAIK로 확인해야하지만, 그렇습니다. 액세스 할 수없는 디렉토리는 종종 존재하지 않는 디렉토리와 유사하게 작동합니다.
hakre

3
이것은 더 이상 이곳이있는 곳이 아닙니다. 내용 탭에 있습니다.
CarComp

@CarComp : 업데이트 된 스크린 샷을 제공하고 답변을 편집하십시오. 내가 대답했을 때, 그것은 문서화 된 것과 같습니다.
hakre

11

필자의 경우 공급 업체 디렉토리에서 하위 테마를 삭제했습니다. 그러나 DB 항목은 여전히 theme테이블에 있습니다. 따라서 theme표로 이동하여 삭제 된 테마를 가리키는 레코드를 삭제하십시오.


공급 업체 디렉토리에서 어떻게 삭제 했습니까? 작곡가 composer remove vendor/theme?
hakre

아니요, 단지rm -rf vendor/theme
Arvind07

7

확인 theme테이블 항목 및 magento\app\design\frontend\<Vendor>항목은 동일합니다.

그렇지 않으면이 문제가 발생합니다.

관리자-> 컨텐츠-> 디자인-> 테마 를 통해 불필요한 테마를 제거하십시오 . 삭제하십시오. 따라서 DB 항목도 제거됩니다.

폴더 만 제거하면 작동하지 않습니다.


7

이 문제는 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()
    ]
);

이렇게하면 더러운 작은 해킹이 필요하지 않습니다.


이 깊이를 공유해 주셔서 감사합니다. 이 답변은 자체적으로 FAQ가되어 매우 잘 보입니다.
hakre

4

운영 sql UPDATE core_config_data SET value=NULL WHERE path='design/theme/theme_id'

다음 취소 pub/static/frontend, var/view_preprocessing, var/cache, var/page_cache디렉토리.


1

@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 ) 로 돌아가서 오류를 해결 했습니다.


redis 구성을 위해 'cache'를 env.php에 추가 할 때만이 오류가 발생합니다. 변경 사항을 제거하면 제대로 작동합니다. 그렇다면 왜 '캐시'를 추가 할 때입니까? 배열의 구문을 확인했는데 괜찮습니다. 스테이징 서버에서 동일한 캐시 => 값이 작동합니다 (잘라 내기 / 붙여 넣기)
Scott

1

사용자 정의 테마를 설치 한 후 제품 이미지를 저장할 때이 오류가 발생했습니다.

가상 유형으로 설정된 사용자 정의 테마, 즉 테마 테이블의 DB에 유형 = 1이 있습니다. 제 경우에는 더 이상 테마를 사용하지 않았으므로 테이블에서 삭제했습니다.


1

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

0

아무것도 효과가 없다면 카테고리 섹션을 확인하는 것을 잊지 마십시오. 디자인 설정도 있습니다. 올바른 디자인 테마가 지정되어 있는지 확인하십시오. 제 경우에는 일부 범주에서만 오류가 발생했습니다.


이 문제가 발생할 수있는 예제 시나리오를 제공해 주시겠습니까? 내가 생각할 수있는 유일한 것은 레이아웃이 사용자 정의 테마에만있는 옵션으로 변경된 경우 테마가 제거되는 것입니다. 그러나 이것이 기본 레이아웃 (또는 동일한 이름을 사용하는 기본값의 수정 된 버전) 만 사용하는 동안 발생한다면, 그것은 마 젠토 소프트웨어 자체가 아닌 사용자 정의 테마의 결함을 반드시 의미합니까?
Joshua 홍수

0

제품을 추가하거나 편집 할 때 디자인 섹션으로 이동하여 레이아웃 옵션을 변경하십시오.

여기에 이미지 설명을 입력하십시오


0

아래 쿼리를 실행하여 사용하지 않는 테마를 DB에서 직접 제거 할 수 있습니다.

delete from theme where theme_path in ('unusedtheme');

사용하지 않는 테마는 사용되지 않은 테마이며 캐시를 클렌


0

사고 app / desing / adminhtml / theme-name 폴더로 제거했을 때이 문제가 발생했습니다. 다시 가져 오면 문제가 해결되었습니다. 또한 관리자 패널에 들어 가려고 할 때만 발생했습니다.


0

경우에 따라 사용자 정의 테마를 올바르게 삭제하면이 오류가 발생합니다. 이러한 상황에서:

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'

사라진 페이지 오류를 새로 고칩니다.


0

문제를 해결했습니다. 필자의 경우 문제는 Magento2가 아니라 다음과 같이 시간이 지남에 따라 잘못된 작업이었습니다 .app / design / frontend / MyFolder / MyTheme에서 상대 경로를 만드는 테마를 만들고 Magento 2 온라인 설명서에 설명 된대로 등록했습니다. 그런 다음 테마를 취소하고 대신 적절한 명령을 사용하기로 결정했습니다. bin / magento theme : uninstall frontend / MyFolder / MyTheme 폴더를 직접 삭제했습니다. 데이터베이스가 만기 정보로 갱신되지 않았으므로 이는 좋은 조작이 아닙니다. 솔루션 : 데이터베이스 편집기를 phpmyadmin으로 사용하여 삭제 된 폴더에 해당하는 "테마"테이블의 레코드를 삭제하십시오. 이것이 도움이되기를 바랍니다!


0

나는이 질문이 꽤 오래되었다는 것을 알고 있지만 오늘 막이 문제에 부딪 쳤고 내 문제가 무엇인지 신속하게 알아 냈기 때문에 PhpStorm을 사용하여 Magento와 함께 일하는 모든 사람들을 위해 상기 답변을 게시하기로 결정했습니다. 분기를 전환 할 때 파일을 확인하십시오.

내 경우에는 내가 작업하고있는 지점에 필요한 테마 파일이 없었습니다 (테마 지점에서 마스터 지점으로 변경했을 때 PhpStorm에 의해 숨겨졌습니다). 오류.

이것이 누군가를 도울 수 있기를 바랍니다.


-1

웹 사이트에서 사용하지 않는 모든 테마 임시 파일을 삭제하고 사용하지 않는 테마에서도 삭제하고 캐시를 실행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.