Aufgrund der hohen Abhängigkeit von XML-Dateien fällt es mir sehr schwer, die Ursache dieses Fehlers beim Erstellen eines benutzerdefinierten Administratorrasters herauszufinden:
Schwerwiegender Fehler: Die Methode Magento \ Ui \ TemplateEngine \ Xhtml \ Result :: __ toString () darf keine Ausnahme in C: \ wamp64 \ www \ mage2 \ vendor \ magento \ module-ui \ Component \ Wrapper \ UiComponent.php online auslösen 0
Ich versuche, ein Admin-Raster für die sales_shipment_item
Tabelle zu erstellen .
Bisher habe ich:
Wenn Sie xdebug verwenden und es in die
__toString()
Methode der Result-Klasse einfügen , wird der tatsächliche Fehler nicht angezeigtIch habe
var_dump
die Variablen innerhalb der__toString()
Methode -edIch habe den Entwicklermodus in Magento 2 aktiviert
Ich habe das überprüft
var/logs
und es zeigt nichts hilfreiches
Ich habe erfolgreich andere benutzerdefinierte Admin-Raster erstellt, aber der Versuch, den tatsächlichen Fehler herauszufinden, ist wie eine Nadel im Heuhaufen. Hat jemand einen besseren Weg gefunden, diese zu debuggen? Ich habe alle Grid-XML-Dateien di.xml
und Modelle durchgesehen und alles sieht in Ordnung aus.
Magento\Ui\TemplateEngine\Xhtml\Result::__toString()
, fangen Sie die Ausnahme ab und protokollieren Sie sie oder drucken Sie sie aus. Das hätte M2 sowieso tun sollen.} catch (\Exception $e) { $this->logger->critical($e->getMessage()); $result = $e->getMessage(); }
Der Fehler ist das, was ich bereits gepostet habe. Wenn ich diese Fehler zuvor hatte, hat dies normalerweise mit fehlenden di.xml-Injektionen zu tun, aber diese können nicht ohne Vermutung debuggt werden, weshalb ich diese Frage gestellt habe.Antworten:
Der Fehler, den Sie erhalten, wird tatsächlich ausgelöst
vendor\magento\module-ui\Component\Wrapper\UiComponent.php
.Es wird jedoch nicht in Zeile 0 ausgelöst, sondern wenn das Ergebnis in der folgenden Methode in der return-Anweisung in eine Zeichenfolge konvertiert wird :
Folgendes können Sie versuchen, um Ihr Problem zu beheben:
$result
enthalten ist, bevor die Zeichenfolgenkonvertierungs- und Rückgabeanweisung aufgerufen wird$component->getName()
,$component->getComponentName()
und finden$component->getData()
Sie heraus, wo das Problem liegtquelle
Dieser schwerwiegende Fehler trat mir auch auf, als ich eine benutzerdefinierte Auflistung / ein benutzerdefiniertes Raster hinzufügte. Ich habe dieses Problem behoben, indem ich den Konstruktor geändert und die korrekte Erfassung für meine Datenliste / mein Raster im Datenprovider-Konstruktor initiiert habe. Beispiel für ein benutzerdefiniertes Raster DataProvider.php
Sie müssen jedoch \ Acme \ CustomModule \ Model \ ResourceModel \ Entity \ Listing \ Collection erstellen, um die Daten im Datenprovider abzurufen
quelle
Wenn Sie M1 nach M2 migriert haben, tritt während der Cmd-Ausführung ein Fehler unterhalb des Fehlers auf. Der angeforderte Speicher wurde nicht gefunden. Überprüfen Sie das Geschäft und versuchen Sie es erneut.
Bitte ändern Sie die Vendor Module-Store- Dateien nicht :
Wenden Sie einfach die folgenden Schritte an:
Ich bin erst kürzlich nach der Migration von Magento 1.9.3.8 auf 2.3.0 auf dieselbe Situation gestoßen und hoffe, dass meine Antwort hilfreich sein kann. Das Problem bestand darin, mehrere Geschäfte zu löschen, von denen 96 genau waren. Ich habe alle anderen Antworten hier ausprobiert, aber immer noch den gleichen Fehler erhalten.
Das Update für mich war das Entfernen der alten Speicherdaten aus den "core_config_data" . Das Problem ist, dass Magento beim Laden der Laufzeitkonfigurationsdaten die alten Speicher findet und versucht, diese aufzulösen. Vor dem Bereinigen der Daten aus der Datenbank empfehle ich dringend, die folgende SELECT-Abfrage auszuführen, um sicherzustellen, dass Sie die richtigen Speicher löschen.
WARNUNG: Stellen Sie sicher, dass Sie Ihre Datenbank sichern, bevor Sie diese ausführen!
Führen Sie nun alle magento Befehle können Sie das sehen , „Der Laden, der angefordert wurde , wurde nicht gefunden. Überprüfen Sie den Laden und versuchen es erneut“ fixiert Abfrage
Überprüfen Sie jetzt Ihren Administrator über schwerwiegenden Fehler auch behoben blahhh ... blahh ...
(Hinweis: - Schwerwiegender Fehler_Magento \ Ui \ TemplateEngine \ Xhtml \ Result :: __ toString (), abhängig vom Speichermodul.
quelle
Nach unzähligen Stunden und vielen Schlägen mit dem Kopf gegen den Schreibtisch stellte ich fest, dass ich diesen Fehler bekam, weil ich xdebug (was erstaunlich ist!) Verwendete, um bei einer Funktion auf niedriger Ebene einen Haltepunkt zu setzen, nämlich
Magento\Ui\TemplateEngine\Xhtml\Result::__toString()
um zu testen.Anscheinend hat die Ausgabe des Debuggers tatsächlich einen Fehler ausgelöst, der dazu führte, dass die __toString-Methode mich anschrie.
Ich wurde verrückt, weil sich der Fehler nur zeigte, wenn ich den Debugger eingeschaltet hatte und dachte, dass er möglicherweise etwas mit dem AJAX-Aufruf beim Auffüllen der UI-Liste zu tun hat. Das Ausschalten schien zu funktionieren, es lohnt sich also, es auszuprobieren. Ich bin mir nicht sicher, wie die Haltepunktfunktionalität von xdebug (speziell in IntelliJ-Produkten ... möglicherweise) funktioniert, außer dass Sie einen Haltepunkt mit der Zeile aufrufen können
xdebug_break()
. Es ist sehr wahrscheinlich, dass ein Haltepunkt in der __toString-Methode auf jeden Fall nur eine dumme Sache ist.Vermutlich können wir noch nicht alles dynamisch debuggen ... Eines Tages!
Ich hoffe wirklich, dass dies jemand anderem hilft.
quelle