Debuggen von UI-Komponenten

16

Ich versuche, ein CRUD-Modul zu erstellen, das UI-Komponenten für das Administratorraster und das Formular verwendet.
Ich habe das schon mal gemacht und gearbeitet, aber das hier ist ein bisschen anders und anscheinend habe ich etwas vermasselt.
Das Problem liegt mit Sicherheit in der UI-Komponentendatei oder in einer Klasse, auf die die UI-Komponentendatei verweist. Wenn ich die UI-Komponentenreferenz aus der Layoutdatei entferne, wird die Seite geladen (ohne das Raster offensichtlich).
Beim Einbeziehen der UI-Komponente ist die Seite leer und es wird auch im Entwicklermodus nirgendwo ein Fehler protokolliert.

Wie / wo kann ich mit dem Debuggen des Ladens und Renderns der UI-Komponenten beginnen?

Marius
quelle
Ich hatte vor ein paar Tagen das gleiche Problem. Es lag an der falschen Ordnerstruktur des Ordners ui_component. Dann gab es ein Problem in di.xml
Bhupendra Jadeja
Im Moment interessiert mich mein Fehler nicht. Ich interessiere mich dafür, wie ich das debuggen kann, da es in Zukunft passieren könnte.
Marius
Das Debuggen von XML ist sehr mühsam. Immer wenn ich einen Fehler in report und system.xml habe. Ich hoffe, wir bekommen eine Antwort vom Kernteam.
Bhupendra Jadeja
Haben Sie eine Möglichkeit zum Debuggen von XML erhalten?
Bhupendra Jadeja
1
Ich habe in der Anwendung einen Punkt gefunden, an dem ich anfangen kann, bin mir aber noch nicht sicher, ob dies nicht der beste Punkt ist. Ich werde heute oder morgen eine Antwort posten, wenn ich etwas Festes finde.
Marius

Antworten:

12

Bisher habe ich festgestellt, dass beim Rendern des Layouts dieser Stapel befolgt wird.

  • \Magento\Framework\View\Layout::generateElements
  • \Magento\Framework\View\Layout\GeneratorPool::process

Je nach Art des Layouts wird nun ein anderer Layoutgenerator aufgerufen

foreach ($this->generators as $generator) {
    $generator->process($readerContext, $generatorContext);
}

Für die Ui-Komponenten ... Fortsetzung des Stapels:

  • \Magento\Framework\View\Layout\Generator\UiComponent::process()
  • \Magento\Framework\View\Layout\Generator\UiComponent::generateComponent()
  • \Magento\Framework\View\Element\UiComponentFactory::create()
  • \Magento\Ui\Model\Manager::prepareData()
  • \Magento\Ui\Model\Manager::evaluateComponents()
  • Magento\Framework\Data\Argument\InterpreterInterface::evaluate.

Auch hier kommt es auf den zu interpretierenden Argumenttyp an.
Einige Dolmetscher finden Sie hierlib/internal/Magento/Framework/Data/Argument/Interpreter/

Das ist so weit wie ich gekommen bin.
Ich weiß, es ist keine vollständige Erklärung, aber dies sind einige Punkte, an denen Sie feststellen können, ob etwas mit Ihrer UI-Komponente nicht stimmt.

Marius
quelle
1

Versuchen:

Source/vendor/magento/module-ui/Component/Wrapper/UiComponent.php

Methode: protected function _toHtml()

ungefähr beginnend in Zeile 57

Debuggen Sie $resultund es sollte alle Komponenten enthalten, die geladen werden.

codiga
quelle
0

Die einzige Möglichkeit, um UI-Komponenten zu debuggen, besteht darin, alles aus der Komponente xml zu entfernen und nacheinander Elemente hinzuzufügen, um sicherzustellen, dass die Attribute in der xsd unterstützt werden.

jwtea
quelle
1
Die Datei ist gültig für die xsd-Datei. Und ich bin mir sicher, dass es nicht nur darum geht, Teile der Datei zu entfernen. Es muss einen Ort geben, an dem die Datei geladen und verarbeitet wird.
Marius
0

Sie können mit css beginnen, um das Debuggen zu starten. Sie können die Datei theme.less unter app / design / frontend / Mgs / molly / web / css verwenden

Nachdem Sie den Code geändert haben, den Sie im var-Verzeichnis gelöscht haben, ist der Inhalt im Frontend-Verzeichnis von pub / static / frontend / gelöscht.

Zuletzt drücken Sie den Befehl im Setup von cmd php bin / magento: static-content: deploy

vnnogile_user
quelle
Was hat CSS mit dem Debuggen von UI-Komponenten zu tun?
Marius
Sie können das Layout oder die Farbe ändern. @Marius
vnnogile_user
Das hat nichts mit der Frage zu tun. Ich habe nicht nach Farben gefragt.
Marius
0

Ich würde anfangen mit:

Magento\Ui\TemplateEngine\Xhtml\Result->__toString( )

Dies ist der Ort, an dem Ui XML zusammengeführt wird. Dies sollte also ein Ausgangspunkt für das Ui XML-Debugging sein.

Sumoborac
quelle