Неопределенная отладка трассировки Стека Компонентов?


Я довольно новичок в magento2 и пытаюсь исправить сломанное расширение.

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

Пример: Если я зайду в каталог и попытаюсь добавить новый продукт того типа, который предоставляет это расширение (это подарочная карта расширение),

Он выдает ошибку и умирает.

Трассировка стека выглядит следующим образом.

a:4:{i:0;s:112:"The requested component ("giftcard_price_selector") is not found. Before using, you must add the implementation.";i:1;s:8841:"#0 /path/to/magento/install/vendor/magento/module-ui/Model/Manager.php(207): Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition->getComponentData('giftcard_price_...')
#1 /path/to/magento/install/vendor/magento/framework/View/Element/UiComponentFactory.php(187): Magento\Ui\Model\Manager->createRawComponentData('giftcard_price_...')
#2 /path/to/magento/install/vendor/magento/module-ui/Component/Form/Field.php(82): Magento\Framework\View\Element\UiComponentFactory->create('giftcard_price_...', 'giftcard_price_...', Array)
#3 /path/to/magento/install/vendor/magento/framework/View/Layout/Generator/UiComponent.php(148): Magento\Ui\Component\Form\Field->prepare()
#4 /path/to/magento/install/vendor/magento/framework/View/Layout/Generator/UiComponent.php(145): Magento\Framework\View\Layout\Generator\UiComponent->prepareComponent(Object(Magento\Ui\Component\Form\Field))
#5 /path/to/magento/install/vendor/magento/framework/View/Layout/Generator/UiComponent.php(145): Magento\Framework\View\Layout\Generator\UiComponent->prepareComponent(Object(Magento\Ui\Component\Container))
#6 /path/to/magento/install/vendor/magento/framework/View/Layout/Generator/UiComponent.php(145): Magento\Framework\View\Layout\Generator\UiComponent->prepareComponent(Object(Magento\Ui\Component\Form\Fieldset))
#7 /path/to/magento/install/vendor/magento/framework/View/Layout/Generator/UiComponent.php(126): Magento\Framework\View\Layout\Generator\UiComponent->prepareComponent(Object(Magento\Ui\Component\Form))
#8 /path/to/magento/install/vendor/magento/framework/View/Layout/Generator/UiComponent.php(93): Magento\Framework\View\Layout\Generator\UiComponent->generateComponent(Object(Magento\Framework\View\Layout\Data\Structure), 'product_form', Array, Object(Magento\Framework\View\Layout\Interceptor))
#9 /path/to/magento/install/vendor/magento/framework/View/Layout/GeneratorPool.php(86): Magento\Framework\View\Layout\Generator\UiComponent->process(Object(Magento\Framework\View\Layout\Reader\Context), Object(Magento\Framework\View\Layout\Generator\Context))
#10 /path/to/magento/install/vendor/magento/framework/View/Layout.php(327): Magento\Framework\View\Layout\GeneratorPool->process(Object(Magento\Framework\View\Layout\Reader\Context), Object(Magento\Framework\View\Layout\Generator\Context))
#11 /path/to/magento/install/vendor/magento/framework/View/Layout/Builder.php(129): Magento\Framework\View\Layout->generateElements()
#12 /path/to/magento/install/vendor/magento/framework/View/Page/Builder.php(55): Magento\Framework\View\Layout\Builder->generateLayoutBlocks()
#13 /path/to/magento/install/vendor/magento/framework/View/Layout/Builder.php(65): Magento\Framework\View\Page\Builder->generateLayoutBlocks()
#14 /path/to/magento/install/vendor/magento/framework/View/Layout.php(244): Magento\Framework\View\Layout\Builder->build()
#15 /path/to/magento/install/vendor/magento/framework/View/Layout.php(859): Magento\Framework\View\Layout->build()
#16 /path/to/magento/install/vendor/magento/module-backend/Model/View/Result/Page.php(59): Magento\Framework\View\Layout->getBlock('menu')
#17 /path/to/magento/install/vendor/magento/module-catalog/Controller/Adminhtml/Product/NewAction.php(71): Magento\Backend\Model\View\Result\Page->setActiveMenu('Magento_Catalog...')
#18 /path/to/magento/install/vendor/magento/framework/App/Action/Action.php(102): Magento\Catalog\Controller\Adminhtml\Product\NewAction->execute()
#19 /path/to/magento/install/vendor/magento/module-backend/App/AbstractAction.php(226): Magento\Framework\App\Action\Action->dispatch(Object(Magento\Framework\App\Request\Http))
#20 /path/to/magento/install/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Backend\App\AbstractAction->dispatch(Object(Magento\Framework\App\Request\Http))
#21 /path/to/magento/install/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Catalog\Controller\Adminhtml\Product\NewAction\Interceptor->___callParent('dispatch', Array)
#22 /path/to/magento/install/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Catalog...', 'dispatch', Object(Magento\Catalog\Controller\Adminhtml\Product\NewAction\Interceptor), Array, 'adminAuthentica...')
#23 /path/to/magento/install/vendor/magento/module-backend/App/Action/Plugin/Authentication.php(143): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#24 /path/to/magento/install/vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch(Object(Magento\Catalog\Controller\Adminhtml\Product\NewAction\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#25 /path/to/magento/install/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Catalog...', 'dispatch', Object(Magento\Catalog\Controller\Adminhtml\Product\NewAction\Interceptor), Array, 'adminMassaction...')
#26 /path/to/magento/install/vendor/magento/module-backend/App/Action/Plugin/MassactionKey.php(33): Magento\Catalog\Controller\Adminhtml\Product\NewAction\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#27 /path/to/magento/install/vendor/magento/framework/Interception/Interceptor.php(142): Magento\Backend\App\Action\Plugin\MassactionKey->aroundDispatch(Object(Magento\Catalog\Controller\Adminhtml\Product\NewAction\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#28 /path/to/magento/install/var/generation/Magento/Catalog/Controller/Adminhtml/Product/NewAction/Interceptor.php(26): Magento\Catalog\Controller\Adminhtml\Product\NewAction\Interceptor->___callPlugins('dispatch', Array, Array)
#29 /path/to/magento/install/vendor/magento/framework/App/FrontController.php(55): Magento\Catalog\Controller\Adminhtml\Product\NewAction\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#30 /path/to/magento/install/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\App\FrontController->dispatch(Object(Magento\Framework\App\Request\Http))
#31 /path/to/magento/install/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', Array)
#32 /path/to/magento/install/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'install')
#33 /path/to/magento/install/vendor/magento/framework/Module/Plugin/DbStatusValidator.php(69): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#34 /path/to/magento/install/vendor/magento/framework/Interception/Interceptor.php(142): Magento\Framework\Module\Plugin\DbStatusValidator->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#35 /path/to/magento/install/var/generation/Magento/Framework/App/FrontController/Interceptor.php(26): Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', Array, Array)
#36 /path/to/magento/install/vendor/magento/framework/App/Http.php(135): Magento\Framework\App\FrontController\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#37 /path/to/magento/install/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#38 /path/to/magento/install/index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))

Теперь, из этой трассировки, я ясно вижу, что какая-то страница в расширении ссылается на компонент с именем giftcard_price_selector, и если я поищу источник расширения, я увижу, что на него ссылаются в нескольких местах.

Мой вопрос к вам таков: как мне определить, какое это место?

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

Отчасти это связано с тем, что я хочу знать ответ, но если вы опубликуете ответ и сможете дать краткий обзор как вы получили ответ, чтобы я мог узнать сам, это было бы очень ценно

Author: Zachary Craig, 2016-12-27

1 answers

Насколько я понимаю, проблема должна быть в layout.xml файл, так как именно так включаются компоненты UIComponents. Я бы посмотрел в файле вашего модуля catalog_product_new.xml, так как это соответствует имени контроллера (Magento\Catalog\Controller\Adminhtml\Product\NewAction).

Этот файл на самом деле не находится в трассировке стека, но Magento считывает его из файловой системы, чтобы построить дерево блоков компоновки и контейнеров. В Magento 2 каждый layout.xml файл соответствует определенному дескриптору , который является термином для набора инструкций по компоновке. Как правило, дескриптор соответствует URL-адресу действия (frontname/controllerFolder/actionName). В этом случае переднее имя было catalog, подпапка контроллера была product, а класс контроллера, на который ссылается ссылка (который можно назвать классом действий), был NewController, поэтому я бы заглянул в файл view/adminhtml/layout/catalog_product_new.xml.

Добро пожаловать в Magento. Пожалуйста, дайте мне знать, если что-то из того, что я сказал, не имеет смысла или нуждается в разъяснении.

 2
Author: tjons, 2016-12-27 14:30:10