Отладка компонентов пользовательского интерфейса


16

Я пытаюсь построить модуль CRUD, который использует компоненты пользовательского интерфейса для сетки администратора и формы.
Я делал это раньше и работал, но этот немного другой, и, видимо, я что-то напортачил.
Проблема в файле компонента пользовательского интерфейса или некотором классе, на который ссылается файл компонента пользовательского интерфейса. Если я удаляю ссылку на компонент пользовательского интерфейса из файла макета, страница загружается (очевидно, без сетки).
При включении компонента пользовательского интерфейса страница пуста, и нигде не регистрируется никаких ошибок, даже в режиме разработчика.

Как / где я могу начать отладку загрузки и рендеринга компонентов пользовательского интерфейса?


У меня была такая же проблема, прежде чем несколько дней назад. Это было связано с неправильной структурой папки ui_component. Потом была проблема в di.xml
Bhupendra Jadeja

На данный момент меня не волнует моя ошибка. Я забочусь о том, как я могу отладить это, так как это может произойти в будущем.
Мариус

это очень утомительная задача отладки XML. Каждый раз я получаю сообщение об ошибке в отчете и system.xml. Надеюсь, мы получим ответ от основной команды.
Бхупендра Джадежа,

Вы получили какой-либо способ отладки XML?
Бхупендра Джадежа

1
Я нашел точку в приложении, где я могу начать, но я не уверен, что это не лучший способ сделать это. Я отправлю ответ сегодня или завтра, если найду что-то солидное.
Мариус

Ответы:


12

До сих пор я обнаружил, что при рендеринге макета используется этот стек.

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

Теперь, в зависимости от типа макета, вызывается другой генератор макета в

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

Для компонентов пользовательского интерфейса ... продолжение стека:

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

Здесь снова это зависит от типа аргумента, который должен быть интерпретирован.
Вы можете найти некоторых переводчиков здесьlib/internal/Magento/Framework/Data/Argument/Interpreter/

Это насколько я понял.
Я знаю, что это не полное объяснение, но вот некоторые моменты, в которых вы можете определить, если что-то не так с вашим компонентом пользовательского интерфейса.


1

Пытаться:

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

метод: protected function _toHtml()

примерно начиная с линии 57

Отладка, $resultи она должна содержать все загруженные компоненты.


0

Единственный способ отладить компоненты пользовательского интерфейса - это просто удалить все из компонента xml и добавлять элементы по одному, проверяя, что атрибуты поддерживаются в xsd.


1
файл действителен для файла xsd. И я уверен, что есть другой способ, кроме удаления битов файла. Должно быть место, где файл загружается и обрабатывается.
Мариус

0

Вы можете начать с использования css для начала отладки. Вы можете использовать файл theme.less в app / design / frontend / Mgs / molly / web / css, например, изменить базовый цвет, который равен @ base-color: @ 7c7bad.

после изменения любого кода, который вы удаляете, вы можете удалить содержимое каталога в веб-каталоге pub / static / frontend /

Команда последнего нажатия в настройке cmd php bin / magento: static-content: deploy


Какое отношение CSS имеет к отладке компонентов пользовательского интерфейса?
Мариус

Вы можете изменить макет или цвет. @Marius
vnnogile_user

Это не имеет ничего общего с вопросом. Я не спрашивал об изменении цвета.
Мариус

0

Я бы начал с:

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

Это место, где Ui XML собирается вместе. Так что это должно стать отправной точкой для отладки пользовательского интерфейса XML.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.