Depuración de componentes de la interfaz de usuario

16

Estoy tratando de construir un módulo CRUD que use componentes de IU para la cuadrícula y el formulario de administración.
Hice esto antes y trabajé, pero este es un poco diferente y aparentemente arruiné algo.
El problema está en el archivo del componente UI o en alguna clase a la que hace referencia el archivo del componente UI con seguridad. Si elimino la referencia del componente UI del archivo de diseño, la página se carga (sin la cuadrícula, obviamente).
Al incluir el componente de la interfaz de usuario, la página está en blanco y no se registra ningún error en ninguna parte, incluso en modo desarrollador.

¿Cómo / dónde puedo comenzar a depurar la carga y la representación de los componentes de la interfaz de usuario?

Marius
fuente
Tuve el mismo problema hace unos días. Se debió a una estructura de carpeta incorrecta de la carpeta ui_component. Luego hubo un problema en di.xml
Bhupendra Jadeja
Por el momento no me importa mi error. Me importa cómo puedo depurar esto, ya que podría suceder en el futuro.
Marius
Es una tarea muy tediosa depurar el XML. Cada vez que recibo un error en el informe y system.xml. Espero que obtengamos respuesta del equipo central.
Bhupendra Jadeja
¿Tienes alguna forma de depurar XML?
Bhupendra Jadeja
1
Encontré un punto en la aplicación donde puedo comenzar, pero aún no estoy seguro de que ese no sea el mejor punto para hacerlo. Publicaré una respuesta hoy o mañana si encuentro algo sólido.
Marius

Respuestas:

12

Lo que encontré hasta ahora es que al renderizar el diseño se sigue esta pila.

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

Ahora, dependiendo del tipo de diseño, se llama a un generador de diseño diferente

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

Para los componentes Ui ... continuando la pila:

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

Aquí nuevamente depende del tipo de argumento que necesita ser interpretado.
Puedes encontrar algunos intérpretes aquí.lib/internal/Magento/Framework/Data/Argument/Interpreter/

Esto es lo más lejos que llegué.
Sé que no es una explicación completa, pero estos son algunos puntos en los que puede identificar si algo está mal con su componente ui.

Marius
fuente
1

Tratar:

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

método: protected function _toHtml()

aproximadamente comenzando en la línea 57

Depure $resulty debe contener todos los componentes que se cargan.

codiga
fuente
0

La única forma en que he podido depurar componentes de la interfaz de usuario es simplemente eliminar todo del componente xml y agregar elementos uno por uno, asegurándome de que los atributos sean compatibles con el xsd.

jwtea
fuente
1
el archivo es válido contra el archivo xsd. Y estoy seguro de que hay otra forma que no sea eliminar bits del archivo. Tiene que haber un lugar donde se cargue y procese el archivo.
Marius
0

Puede comenzar a usar css para iniciar la depuración, puede usar el archivo theme.less en app / design / frontend / Mgs / molly / web / css, por ejemplo, cambiar el color base que es @ base-color: @ 7c7bad

después de cambiar cualquier código que haya eliminado el directorio var, tiene contenido claro en el directorio frontend de pub / static / frontend /

En el último comando de golpe en cmd php bin / magento setup: static-content: deploy

vnnogile_user
fuente
¿Qué tiene que ver css con la depuración de componentes de la interfaz de usuario?
Marius
Puede cambiar el diseño o el color del mismo. @Marius
vnnogile_user
Esto no tiene nada que ver con la pregunta. No pregunté sobre el cambio de colores.
Marius
0

Yo comenzaría con:

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

Este es el lugar donde se une Ui XML. Por lo tanto, este debería ser un punto de partida para la depuración de Ui XML.

Sumoborac
fuente