contextFactory = $contextFactory; $this->uiComponentFactory = $uiComponentFactory; } /** * Allows to generate Ui component * * @param string $name * @param \Magento\Framework\View\LayoutInterface $layout * @return UiComponentInterface * @throws \Magento\Framework\Exception\LocalizedException */ public function generateUiComponent($name, \Magento\Framework\View\LayoutInterface $layout) { $context = $this->contextFactory->create([ 'namespace' => $name, 'pageLayout' => $layout, ]); $component = $this->uiComponentFactory->create( $name, null, [ 'context' => $context ] ); return $this->prepareComponent($component); } /** * Call prepare method in the component UI * * @param UiComponentInterface $component * @return UiComponentInterface */ private function prepareComponent(UiComponentInterface $component) { $childComponents = $component->getChildComponents(); if (!empty($childComponents)) { foreach ($childComponents as $child) { $this->prepareComponent($child); } } $component->prepare(); return $component; } }