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?


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.


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.


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.


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


¿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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.