Debugowanie komponentów interfejsu użytkownika

16

Usiłuję zbudować moduł CRUD, który używa składników interfejsu użytkownika do siatki administracyjnej i formularza.
Zrobiłem to już wcześniej i pracowałem, ale ten jest nieco inny i najwyraźniej coś spieprzyłem.
Problem tkwi w pliku komponentu interfejsu użytkownika lub pewnej klasie, do której odwołuje się plik komponentu interfejsu użytkownika. Jeśli usunę odwołanie do komponentu interfejsu użytkownika z pliku układu, strona zostanie załadowana (bez siatki oczywiście).
Po dołączeniu komponentu interfejsu użytkownika strona jest pusta i nigdzie nie jest rejestrowany żaden błąd, nawet w trybie programisty.

Jak / gdzie mogę rozpocząć debugowanie ładowania i renderowania komponentów interfejsu użytkownika?

Marius
źródło
Miałem ten sam problem przed kilkoma dniami. Było to spowodowane niewłaściwą strukturą folderów w folderze ui_component. Następnie pojawił się problem w di.xml
Bhupendra Jadeja
Na razie nie dbam o mój błąd. Zależy mi na tym, jak mogę to debugować, ponieważ może się to zdarzyć w przyszłości.
Marius
debugowanie XML jest bardzo żmudnym zadaniem. Za każdym razem, gdy pojawia się błąd w raporcie i system.xml. Mam nadzieję, że otrzymamy odpowiedź od głównego zespołu.
Bhupendra Jadeja
czy masz jakiś sposób na debugowanie XML?
Bhupendra Jadeja
1
W aplikacji znalazłem punkt, w którym mogę zacząć, ale nie jestem jeszcze pewien, czy nie jest to najlepszy moment, aby to zrobić. Odpowiem dziś lub jutro, jeśli znajdę coś solidnego.
Marius

Odpowiedzi:

12

Do tej pory znalazłem, że podczas renderowania układu ten stos jest przestrzegany.

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

Teraz, w zależności od typu układu, wywoływany jest inny generator układu

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

Dla elementów interfejsu użytkownika ... kontynuacja stosu:

  • \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.

Tutaj znowu zależy to od typu argumentu, który należy interpretować.
Tutaj znajdziesz tłumaczylib/internal/Magento/Framework/Data/Argument/Interpreter/

To jest tak daleko, jak to możliwe.
Wiem, że nie jest to pełne wyjaśnienie, ale są to niektóre punkty, w których możesz zidentyfikować, czy coś jest nie tak z komponentem interfejsu użytkownika.

Marius
źródło
1

Próbować:

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

metoda: protected function _toHtml()

w przybliżeniu począwszy od linii 57

Debuguj $resulti powinien zawierać wszystkie ładowane komponenty.

codiga
źródło
0

Jedynym sposobem, w jaki udało mi się debugować komponenty interfejsu użytkownika, jest po prostu usunięcie wszystkiego ze składnika xml i dodanie elementów pojedynczo, upewniając się, że atrybuty są obsługiwane w xsd.

jwtea
źródło
1
plik jest poprawny w stosunku do pliku xsd. I jestem pewien, że istnieje inny sposób niż usunięcie bitów pliku. Musi istnieć miejsce, w którym plik jest ładowany i przetwarzany.
Marius
0

Możesz zacząć od użycia css do rozpoczęcia debugowania. Możesz użyć pliku theme.less w app / design / frontend / Mgs / molly / web / css np. Zmień kolor bazowy na @ base-color: @ 7c7bad

po zmianie dowolnego kodu usuwasz katalog var, masz czystą zawartość w katalogu frontend pub / static / frontend /

Ostatnie naciśnięcie polecenia w cmd php bin / magento setup: static-content: deploy

vnnogile_user
źródło
Co ma wspólnego css z debugowaniem komponentów interfejsu użytkownika?
Marius
Możesz zmienić jego układ lub kolor. @Marius
vnnogile_user
To nie ma nic wspólnego z pytaniem. Nie pytałem o zmianę kolorów.
Marius
0

Zacząłbym od:

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

To jest miejsce, w którym Ui XML jest zbierane razem. Powinno to być punktem wyjścia do debugowania interfejsu użytkownika XML.

Sumoborak
źródło