Depurando componentes da interface do usuário

16

Estou tentando criar um módulo CRUD que usa componentes de interface do usuário para a grade e o formulário do administrador.
Eu fiz isso antes e trabalhei, mas este é um pouco diferente e, aparentemente, eu estraguei algo.
O problema está no arquivo de componente da interface do usuário ou em alguma classe referenciada pelo arquivo de componente da interface do usuário, com certeza. Se eu remover a referência do componente da interface do usuário do arquivo de layout, a página será carregada (sem a grade obviamente).
Ao incluir o componente de interface do usuário, a página fica em branco e não há erro registrado em qualquer lugar, mesmo no modo de desenvolvedor.

Como / onde posso começar a depurar o carregamento e a renderização dos componentes da interface do usuário?

Marius
fonte
Eu tive o mesmo problema antes de alguns dias atrás. Isso ocorreu devido à estrutura de pastas incorreta da pasta ui_component. Em seguida, houve problema no di.xml
Bhupendra Jadeja
No momento, não me importo com o meu erro. Eu me preocupo com como depurar isso, pois isso pode acontecer no futuro.
Marius
é uma tarefa muito tediosa para depurar o XML. Toda vez que eu tenho erro no relatório e system.xml. Espero que tenhamos respostas da equipe principal.
Bhupendra Jadeja 8/07
você conseguiu alguma maneira de depurar XML?
Bhupendra Jadeja
1
Encontrei um ponto no aplicativo em que posso começar, mas ainda não tenho certeza de que esse não é o melhor ponto para fazê-lo. Vou postar uma resposta hoje ou amanhã, se encontrar algo sólido.
Marius

Respostas:

12

O que descobri até agora é que, ao renderizar o layout, essa pilha é seguida.

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

Agora, dependendo do tipo de layout, um gerador de layout diferente é chamado em

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

Para os componentes da interface do usuário ... continuando a pilha:

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

Aqui, novamente, depende do tipo de argumento que precisa ser interpretado.
Você pode encontrar alguns intérpretes aquilib/internal/Magento/Framework/Data/Argument/Interpreter/

Isto é tanto quanto eu cheguei.
Eu sei que não é uma explicação completa, mas esses são alguns pontos em que você pode identificar se algo está errado com seu componente de interface do usuário.

Marius
fonte
1

Experimentar:

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

método: protected function _toHtml()

aproximadamente começando na linha 57

Depure $resulte deve conter todos os componentes carregados.

codiga
fonte
0

A única maneira de depurar os componentes da interface do usuário é apenas remover tudo do xml do componente e adicionar itens um por vez, certificando-se de que os atributos sejam suportados no xsd.

jwtea
fonte
1
o arquivo é válido no arquivo xsd. E tenho certeza de que existe outra maneira além de remover os bits do arquivo. Tem que haver um local em que o arquivo seja carregado e processado.
Marius
0

Você pode começar usando o css para iniciar a depuração. Você pode usar o arquivo theme.less em app / design / frontend / Mgs / molly / web / css, por exemplo, alterar a cor base, que é @ base-color: @ 7c7bad

depois de alterar qualquer código que você exclua o diretório var, você terá um conteúdo limpo no diretório frontend de pub / static / frontend /

No último comando hit na configuração do cmd php bin / magento: static-content: deploy

vnnogile_user
fonte
O que o css tem a ver com a depuração de componentes da interface do usuário?
Marius
Você pode alterar o layout ou a cor dele. @Marius
vnnogile_user
Isso não tem nada a ver com a pergunta. Eu não perguntei sobre a mudança de cores.
Marius
0

Eu começaria com:

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

Este é o local onde o XML da interface do usuário é reunido. Portanto, este deve ser um ponto de partida para a depuração de XML da interface do usuário.

Sumoborac
fonte