Jaki jest komunikat o błędzie:
Wymagany parametr „theme_dir” nie został przekazany
Czy ma to związek z Magento 2? Jak rozwiązać ten problem?
Jaki jest komunikat o błędzie:
Wymagany parametr „theme_dir” nie został przekazany
Czy ma to związek z Magento 2? Jak rozwiązać ten problem?
Odpowiedzi:
Na wszelki wypadek, jeśli usuwasz motyw bezpośrednio (nie w sposób Magento).
Następnie wykonaj następujące kroki.
Usuń zawartość z app/design/frontend/<Vendor>
(najpierw wykonaj kopię zapasową).
Usuń całą zawartość folderu var/view_preprocessed
i pub/static/frontend
.
Przejdź do theme
tabeli i usuń wpis utworzonego motywu.
Po tym...
Przejdź do core_config_data
tabeli i wyszukaj, theme
a otrzymasz rekordy ścieżek, takie jak design/theme/theme_id
zastąp w nim domyślny identyfikator motywu.
Opróżnij pamięć podręczną php bin/magento cache:flush
Daj mi znać, jeśli nadal będziesz mieć problemy.
theme
-Tabela, ale zapomniał o core_config_data
wartości.
setup:static-content:deploy
administrator wrócił do interfejsu użytkownika.
pub/static/.htaccess
nie było. dzięki
Ten komunikat o błędzie oznacza, że masz skonfigurowaną kompozycję, która już nie istnieje w systemie plików (więcej).
Można to łatwo naprawić, wybierając prawidłowy motyw. Przejdź do Treść -> Konfiguracja , wybierz zakres (globalny, strona internetowa, store_view) i zmień motyw. Po wykonaniu tej czynności należy również usunąć go z Treści -> Motywy .
Upewnij się, że theme
wpis i wpis w tabeli magento\app\design\frontend\<Vendor>
będą takie same.
Jeśli nie, powoduje to problem.
Usuń niepotrzebny motyw za pomocą Administratora -> Treść -> Projekt -> Motywy . Usuń to. Więc usunie również DB Entry.
Jeśli usuniesz tylko folder, to nie będzie działać
Ten problem może również wystąpić, gdy jesteś w stanie emulowanym, na przykład w poleceniu CLI. Miałem sytuację, w której nie mogłem wysłać wiadomości e-mail w interfejsie CLI, ponieważ polecenie owijania działało w stanie emulowanym:
$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
// In this section the email was sent
});
W powyższym przykładzie, gdy wiadomość e-mail próbowała ustalić, że jest katalogiem szablonu, zostanie zamapowana na global/Magento/backend
, która nie istnieje. Aby to naprawić, musiałem ręcznie dodać to do mojego konstruktora:
/** @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')
);
Po tej poprawce problem został rozwiązany i mogłem wysłać wiadomość e-mail.
Aktualizacja:
Jeśli chodzi o wysyłanie poczty za pomocą interfejsu CLI, bardziej odpowiednim podejściem byłoby użycie emulacji. Na przykład:
/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
'frontend',
[$this->accountManagement, 'initiatePasswordReset'],
[
$customer->getEmail(),
AccountManagement::EMAIL_REMINDER,
$customer->getWebsiteId()
]
);
W ten sposób nie musisz robić swoich brudnych, małych hacków.
@hakre jest poprawny. Mam ten sam błąd Required parameter 'theme_dir' was not passed
. Poniżej wyjaśniam, co zrobiłem, aby spowodować błąd:
I tworząc temat w / MyVendorTheme2 / myThemeName2 app / design / frontend katalogu, a następnie ustawił go wybierając temat " MyVendorTheme2 - myThemeName2 " w przeglądarce Admin Magento 2 ( Sklepy> Konfiguracja> Ustawienia motywu> Ogólne> Projekt> Projekt Theme ) . Ale potem postanowiłem przenieść katalog „ myThemeName2 ” (zawierający mój nowy motyw) do innego (istniejącego) folderu dostawcy „ MyVendorTheme1 ” app / design / frontend / MyVendorTheme1 / myThemeName2 i usunąłem go z folderu „ MyVendorTheme2 ”, w którym to było wcześniej. I przystąpił do opracowania aktywa (czyli grunt clean
, grunt exec:myThemeName2
,grunt less:myThemeName2
), a następnie otworzyłem przeglądarkę w mojej subdomenie motywu (tj. http: // moja_wirtualnahostdomena: mójport / mojavendortheme1_mythemename2_magento2_quickstart / ).
Początkowo otrzymałem nieokreślony błąd:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number:
I włączone raportowanie błędów przez zmianę nazwy pub/errors/local.xml.sample
, aby local.xml
i odświeżane stronę. Następnie został przedstawiony błąd Required parameter 'theme_dir' was not passed
.
Rozwiązałem błąd, wracając do mojej przeglądarki Magento 2 Admin ( Sklepy> Konfiguracja> USTAWIENIA TEMATÓW> OGÓLNE> Projekt> Motyw projektu ), w której wybrano mój poprzedni i teraz nieprawidłowy motyw projektu, więc wybrałem właściwy.
1 - Użyj poniższego polecenia, aby zidentyfikować motywy w panelu administracyjnym.
n98-magerun2 dev:theme:list
2 - Uruchom polecenie, aby zidentyfikować zainstalowane motywy:
ls -lha app/design/frontend/MyThemePackage/
3- Uruchom poniższe polecenia, aby utworzyć motyw, który nie istnieje:
n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
Jeśli nic nie zadziałało, nie zapomnij sprawdzić sekcji kategorii. Tam też są ustawienia projektu. Upewnij się, że przypisano poprawny motyw projektu. W moim przypadku błąd występował tylko w niektórych kategoriach.
Możesz usunąć nieużywany motyw bezpośrednio z bazy danych, wykonując poniższe zapytanie:
delete from theme where theme_path in ('unusedtheme');
whene unusedtheme to nieużywany motyw, a po zamknięciu pamięci podręcznej
W niektórych przypadkach motyw niestandardowy zostanie usunięty w odpowiedni sposób, wtedy pojawi się również ten błąd. W tej sytuacji:
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'
Odśwież błąd strony zniknął.
Rozwiązałem problem. W moim przypadku problemem nie był Magento2, ale niepoprawna operacja, którą zrobiłem dawno temu: Stworzyłem motyw tworzący ścieżkę względną w app / design / frontend / MyFolder / MyTheme i zarejestrowałem go, jak wyjaśniono w dokumentacji online Magento 2. Następnie postanowiłem anulować motyw i zamiast tego użyć odpowiedniego polecenia: bin / magento theme: odinstaluj frontend / MyFolder / MyTheme, usunąłem foldery bezpośrednio. Nie jest to dobra operacja, ponieważ baza danych nie jest aktualizowana wymaganymi informacjami. Rozwiązanie: z edytorem bazy danych jako phpmyadmin usuń rekord z tabeli „Motyw” odpowiadający usuniętym folderom. Mam nadzieję, że to pomoże!
Wiem, że to pytanie jest dość stare, ale ponieważ natknąłem się na to właśnie dzisiaj i szybko dowiedziałem się, jaki jest mój problem, postanowiłem opublikować moją odpowiedź jako przypomnienie dla wszystkich, którzy podobnie jak ja używają PhpStorm do pracy z Magento: pamiętaj, aby sprawdzić swoje pliki podczas zmiany gałęzi.
W moim przypadku gałąź, nad którą pracowałem, nie miała wymaganych plików motywu (zostały one ukryte przez PhpStorm, gdy zmieniłem gałąź motywu na gałąź master), ponieważ nie zostały jeszcze scalone, więc błąd.
Mam nadzieję, że to może komuś pomóc.
usuń wszystkie tymczasowe pliki motywu, które nie są używane na stronie internetowej i usuń również z motywu, który nie używa i uruchom pamięć podręczną: