Was ist die Fehlermeldung:
Erforderlicher Parameter 'theme_dir' wurde nicht übergeben
Hat es mit Magento 2 zu tun? Und wie kann dieses Problem behoben werden?
Was ist die Fehlermeldung:
Erforderlicher Parameter 'theme_dir' wurde nicht übergeben
Hat es mit Magento 2 zu tun? Und wie kann dieses Problem behoben werden?
Antworten:
Nur für den Fall, dass Sie das Thema direkt entfernen (nicht in Magento-Weise).
Folgen Sie dann diesen Schritten.
Löschen Sie den Inhalt von app/design/frontend/<Vendor>
(stellen Sie sicher, dass Sie ihn zuerst sichern).
Löschen Sie den gesamten Inhalt des Ordners var/view_preprocessed
& pub/static/frontend
.
Gehen Sie zu Ihrem theme
Tisch und löschen Sie den Eintrag für Ihr erstelltes Thema.
Nachdem...
Gehen Sie zu Ihrem core_config_data
Tisch und suchen Sie nach, theme
und Sie erhalten design/theme/theme_id
Pfadaufzeichnungen, in denen Sie Ihre Standardthema-ID ersetzen können.
Leeren Sie Ihren Cache php bin/magento cache:flush
Lassen Sie mich wissen, wenn Sie danach noch Probleme haben.
theme
-Tabelle repariert, aber den core_config_data
Wert vergessen .
setup:static-content:deploy
admin ausgeführt wurde, kehrte er zur Benutzeroberfläche zurück.
pub/static/.htaccess
war nicht da. Danke
Diese Fehlermeldung bedeutet, dass Sie ein Design konfiguriert haben, das auf dem Dateisystem nicht mehr vorhanden ist.
Es kann leicht behoben werden, indem stattdessen ein gültiges Thema ausgewählt wird. Gehen Sie zu Inhalt -> Konfiguration , wählen Sie den Bereich (global, Website, store_view) und ändern Sie das Thema. Nachdem Sie dies getan haben, sollten Sie es auch aus Inhalt -> Themen entfernen .
In meinem Fall habe ich ein untergeordnetes Thema aus dem Anbieterverzeichnis gelöscht. Aber der DB-Eintrag war noch in der theme
Tabelle vorhanden. Gehen Sie also zu der theme
Tabelle und löschen Sie den Datensatz, der auf das gelöschte Thema verweist.
composer remove vendor/theme
?
rm -rf vendor/theme
Stellen Sie sicher, dass der theme
Tabelleneintrag und der magento\app\design\frontend\<Vendor>
Eintrag identisch sind.
Wenn nicht, verursacht es dieses Problem.
Entfernen Sie unnötige Designs über Admin -> Inhalt -> Design -> Designs . Lösche es. Daher wird auch DB Entry entfernt.
Wenn Sie nur Ordner entfernen, funktioniert es nicht
Dieses Problem kann auch auftreten, wenn Sie sich in einem emulierten Zustand befinden, beispielsweise in einem CLI-Befehl. Ich hatte eine Situation, in der ich in der CLI keine E-Mail senden konnte, weil der Befehl wrapping in einem emulierten Zustand ausgeführt wurde:
$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
// In this section the email was sent
});
Wenn im obigen Beispiel versucht wurde, das Vorlagenverzeichnis der E-Mail zu ermitteln, wurde eine Zuordnung zu dieser E-Mail vorgenommen global/Magento/backend
, die nicht vorhanden ist. Um dies zu beheben, musste ich es manuell in meinem Konstruktor hinzufügen:
/** @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')
);
Nach diesem Fix wurde das Problem behoben und ich konnte die E-Mail senden.
Aktualisieren:
Wenn Sie E-Mails über die CLI senden, ist die Verwendung der Emulation ein geeigneterer Ansatz. Zum Beispiel:
/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
'frontend',
[$this->accountManagement, 'initiatePasswordReset'],
[
$customer->getEmail(),
AccountManagement::EMAIL_REMINDER,
$customer->getWebsiteId()
]
);
Auf diese Weise müssen Sie Ihre schmutzigen kleinen Hacks nicht.
@hakre ist richtig. Ich habe den gleichen Fehler bekommen Required parameter 'theme_dir' was not passed
. Im Folgenden erkläre ich, was ich getan habe, um den Fehler zu verursachen:
Ich erstelle ein Thema im Verzeichnis app / design / frontend / MyVendorTheme2 / myThemeName2 und konfiguriere es dann, indem ich das Thema " MyVendorTheme2 - myThemeName2 " im Magento 2 Admin-Browser auswähle ( Stores> Configuration> THEMENEINSTELLUNGEN> GENERAL> Design> Design Theme ) . Aber ich habe dann beschlossen , die „zu bewegen myThemeName2 “ Verzeichnis (mein neues Thema enthält) unter einem anderen (vorhandenen) Anbieter Ordner „sein MyVendorTheme1 “ app / design / frontend / MyVendorTheme1 / myThemeName2 , und entfernt sie aus dem „ MyVendorTheme2 “ Ordner , in dem es war davor. Ich ging Vermögenswerte zu kompilieren ( das heißt grunt clean
, grunt exec:myThemeName2
,grunt less:myThemeName2
) und öffnete dann meinen Browser in meiner Themen-Unterdomäne (dh http: // myvirtualhostdomain: myport / myvendortheme1_mythemename2_magento2_quickstart / ).
Anfangs habe ich einen unbekannten Fehler erhalten:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number:
Ich habe die Fehlerberichterstattung durch Umbenennen pub/errors/local.xml.sample
in aktiviert local.xml
und die Seite aktualisiert. Mir wurde dann der Fehler präsentiert Required parameter 'theme_dir' was not passed
.
Ich habe den Fehler behoben, indem ich in meinen Magento 2 Admin-Browser ( Stores> Configuration> THEMENEINSTELLUNGEN> ALLGEMEIN> Design> Designthema ) zurückgekehrt bin, in dem mein vorheriges und jetzt ungültiges Designthema ausgewählt war, und daher das richtige ausgewählt habe.
Dieser Fehler ist mir beim Speichern von Produktabbildungen nach der Installation eines benutzerdefinierten Designs passiert.
Ich hatte das benutzerdefinierte Design, das als virtueller Typ festgelegt wurde, dh in der DB in der Designtabelle, Typ = 1. In meinem Fall habe ich das Design nicht mehr verwendet und es daher aus der Tabelle gelöscht.
1 - Verwenden Sie den folgenden Befehl, um die Themen im Admin-Bereich zu identifizieren.
n98-magerun2 dev:theme:list
2 - Führen Sie den Befehl aus, um die installierten Designs zu identifizieren:
ls -lha app/design/frontend/MyThemePackage/
3- Führen Sie die folgenden Befehle aus, um das Thema zu erstellen, das nicht vorhanden ist:
n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
Wenn nichts funktioniert hat, vergessen Sie nicht, den Abschnitt Kategorien zu überprüfen. Dort gibt es auch eine Designeinstellung. Stellen Sie sicher, dass das richtige Designthema zugewiesen ist. In meinem Fall wurde der Fehler nur in einigen Kategorien angezeigt.
Sie können das nicht verwendete Design direkt aus der Datenbank entfernen, indem Sie die folgende Abfrage ausführen:
delete from theme where theme_path in ('unusedtheme');
Wann nicht verwendet, ist das nicht verwendete Thema, und nachdem Sie Ihren Cache clena
In einigen Fällen löschen Sie ein benutzerdefiniertes Design auf eine nicht ordnungsgemäße Weise. In diesem Fall tritt auch dieser Fehler auf. In dieser Situation:
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'
Aktualisieren Sie den Seitenfehler weg.
Ich habe das Problem behoben. In meinem Fall war das Problem nicht Magento2, sondern eine falsche Operation, die ich vor einiger Zeit wie folgt ausgeführt habe: Ich habe ein Design erstellt, das den relativen Pfad in app / design / frontend / MyFolder / MyTheme erstellt und wie in der Magento 2-Online-Dokumentation beschrieben registriert. Dann habe ich beschlossen, das Thema abzubrechen und stattdessen den entsprechenden Befehl zu verwenden: bin / magento theme: deinstalliere Frontend / MyFolder / MyTheme Ich habe die Ordner direkt gelöscht. Dies ist keine gute Operation, da die Datenbank nicht mit den erforderlichen Informationen aktualisiert wird. Lösung: Löschen Sie mit einem Datenbankeditor wie phpmyadmin den Datensatz in der Tabelle "Theme", der den gelöschten Ordnern entspricht. Ich hoffe das wird helfen!
Ich weiß, dass diese Frage ziemlich alt ist, aber da ich erst heute darauf gestoßen bin und schnell herausgefunden habe, was mein Problem ist, habe ich beschlossen, meine Antwort als Erinnerung für all diejenigen zu posten, die wie ich PhpStorm für die Arbeit mit Magento verwenden: Denken Sie daran, Ihre Dateien beim Wechseln der Zweige auszuchecken.
In meinem Fall verfügte der Zweig, an dem ich arbeitete, nicht über die erforderlichen Themendateien (diese wurden von PhpStorm gespeichert, als ich vom Themenzweig zum Hauptzweig wechselte), da sie noch nicht darin zusammengeführt wurden Error.
Hoffe das könnte jemandem helfen.
Löschen Sie alle temporären Themendateien, die nicht auf der Website verwendet werden, und löschen Sie auch die temporären Themendateien, die nicht verwendet werden, und führen Sie den Cache aus: flush