Magento2.1.0 pokazuje błąd Wymagany parametr 'theme_dir' nie został przekazany podczas zapisywania produktu w adminie

17

Mam do czynienia z tym błędem Wymagany parametr „theme_dir” nie został przekazany podczas próby zapisania produktu w panelu administratora. Sprawdziłem konfigurację motywu, która została przypisana do sklepów. Ostatnio zaktualizowałem wersję z 2.0.7 do 2.1.0, a także sprawdziłem, czy istnieje katalog rejestracji pliku theme.php . Każdy napotkał ten problem.

Fabian Schmengler
źródło

Odpowiedzi:

42

Ten błąd pojawia się po usunięciu folderu szablonu, do którego nadal istnieje odwołanie w bazie danych. Najprościej to naprawić, przejdź do bazy danych, aw tabeli „motyw” znajdź nazwę motywu, która nie istnieje app/design/frontend/package.

DELETE odniesienie do brakującego motywu z tabeli.

Vu Anh
źródło
To powinna być zaakceptowana odpowiedź.
seanbreeden
IDEALNY .. DZIAŁAŁO JAK SZARM
Zorox
To powinna być zaakceptowana odpowiedź.
Daan van den Bergh
2 rekordy były dodatkowe w mojej bazie danych Usunąłem BUt nadal nie działa
HaFiz Umer
10

Mogę potwierdzić, że odpowiedź Vu Anha działa. Oto wyjaśnienie, dlaczego tak się dzieje, gdy produkty są zapisywane , chociaż usunięty motyw nie jest używany nigdzie:

Po zapisaniu produktu pamięć podręczna obrazu jest generowana ponownie dla wszystkich motywów. Każdy motyw może mieć własne formaty rozmiaru obrazu, zdefiniowane etc/view.xmli wszystkie zostaną wygenerowane.

Ale zamiast szukać skonfigurowanych motywów we wszystkich sklepach, Magento przegląda wszystkie motywy w themetabeli.

Jeśli nie odinstalowałeś poprawnie motywu i po prostu usunąłeś pliki, osierocony wpis odnosi się do nieistniejącej ścieżki, a opisany wyjątek zostanie zgłoszony.

Fabian Schmengler
źródło
2

Mam ten sam błąd Wymagany parametr „katalog_dysku” nie został przekazany . Od początku pracuję z wersją 2.1.0, nie z aktualizacją. I mam jeden niestandardowy atrybut produktu „styl”.

Problem występuje, gdy próbuję zapisać nowe zdjęcie w materiale. Bez obrazu produkt zapisywany jest normalnie.

Napraw, komentując wyjątek w pliku:

vendor/magento/framework/view/design/Fallbck/Rule/Simple.php  

To zadziałało dla mnie. Ale myślę, że to hack.

Galina
źródło
To zdecydowanie hack. Napraw problem zamiast usuwać wyjątek.
Daan van den Bergh
-2

W końcu naprawiłem to, komentując wyjątek pod vendor/magento/framework/View/Design/Fallback/Rule/Simple.php.

if (in_array($placeholder, $this->optionalParams)) {
    return [];
} else {
    return [];
    //throw new \InvalidArgumentException("Required parameter '{$placeholder}' was not passed");
}
7ochem
źródło
4
Ale to nie naprawia błędu, tylko go nie pokazuje. (Myślę, że rozwiązanie Vu
Anha
3
To nie jest właściwy sposób na rozwiązanie tego problemu! Sprawdź odpowiedź od Vu Anh.
medina
2
To nie jest najlepsze rozwiązanie. Proszę nie rób tego
Ankit Shah