Débogage des composants de l'interface utilisateur

16

J'essaie de construire un module CRUD qui utilise des composants d'interface utilisateur pour la grille et le formulaire d'administration.
Je l'ai déjà fait et travaillé, mais celui-ci est un peu différent et apparemment j'ai foiré quelque chose.
Le problème est dans le fichier de composant d'interface utilisateur ou dans une classe référencée par le fichier de composant d'interface utilisateur à coup sûr. Si je supprime la référence du composant UI du fichier de mise en page, la page se charge (sans la grille évidemment).
Lors de l'inclusion du composant d'interface utilisateur, la page est vierge et aucune erreur n'est enregistrée nulle part, même en mode développeur.

Comment / où puis-je commencer à déboguer le chargement et le rendu des composants de l'interface utilisateur?

Marius
la source
J'ai eu le même problème avant il y a quelques jours. Cela était dû à une structure de dossier incorrecte du dossier ui_component. Puis il y avait un problème dans di.xml
Bhupendra Jadeja
Pour le moment je me fiche de mon erreur. Je me soucie de la façon dont je peux déboguer cela car cela pourrait se produire à l'avenir.
Marius
il est très fastidieux de déboguer le XML. Chaque fois que j'ai une erreur dans le rapport et system.xml. J'espère que nous recevrons une réponse de l'équipe de base.
Bhupendra Jadeja
avez-vous trouvé un moyen de déboguer XML?
Bhupendra Jadeja
1
J'ai trouvé un point dans l'application où je peux commencer, mais je ne suis pas encore sûr que ce ne soit pas le meilleur point pour le faire. Je posterai une réponse aujourd'hui ou demain si je trouve quelque chose de solide.
Marius

Réponses:

12

Ce que j'ai trouvé jusqu'à présent, c'est que lors du rendu de la mise en page, cette pile est suivie.

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

Maintenant, selon le type de mise en page, un générateur de mise en page différent est appelé dans

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

Pour les composants Ui ... continuer la pile:

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

Là encore, cela dépend du type d'argument à interpréter.
Vous pouvez trouver des interprètes icilib/internal/Magento/Framework/Data/Argument/Interpreter/

C'est aussi loin que je suis arrivé.
Je sais que ce n'est pas une explication complète, mais ce sont des points où vous pouvez identifier si quelque chose ne va pas avec votre composant d'interface utilisateur.

Marius
la source
1

Essayer:

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

méthode: protected function _toHtml()

commençant approximativement à la ligne 57

Déboguez $resultet il devrait contenir tous les composants qui sont chargés.

codiga
la source
0

La seule façon dont j'ai pu déboguer les composants de l'interface utilisateur est simplement de tout supprimer du composant xml et d'ajouter des éléments un par un en s'assurant que les attributs sont pris en charge dans le xsd.

jwtea
la source
1
le fichier est valide par rapport au fichier xsd. Et je suis sûr qu'il existe un autre moyen que la suppression de bits du fichier. Il doit y avoir un endroit où le fichier est chargé et traité.
Marius
0

Vous pouvez commencer par utiliser css pour démarrer le débogage, vous pouvez utiliser le fichier theme.less sous app / design / frontend / Mgs / molly / web / css, par exemple changer la couleur de base qui est @ base-color: @ 7c7bad

après avoir changé le code, vous avez supprimé le répertoire var, vous avez un contenu clair sous le répertoire frontend de pub / static / frontend /

Enfin la commande hit dans la configuration de cmd php bin / magento: static-content: deploy

vnnogile_user
la source
Qu'est-ce que css a à voir avec le débogage des composants de l'interface utilisateur?
Marius
Vous pouvez changer la disposition ou la couleur de celui-ci. @Marius
vnnogile_user
Cela n'a rien à voir avec la question. Je n'ai pas demandé de changer les couleurs.
Marius
0

Je commencerais par:

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

C'est l'endroit où Ui XML est rassemblé. Cela devrait donc être un point de départ pour le débogage XML Ui.

Sumoborac
la source