Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Wrapper.php
Go to the documentation of this file.
1 <?php
6 namespace Magento\Ui\Block;
7 
11 
17 {
21  private $uiComponentGenerator;
22 
29  public function __construct(Template\Context $context, UiComponentGenerator $uiComponentGenerator, array $data = [])
30  {
31  parent::__construct($context, $data);
32  $this->uiComponentGenerator = $uiComponentGenerator;
33  }
34 
44  private function injectDataInDataSource(UiComponentInterface $uiComponent, array $widgetData)
45  {
46  $context = $uiComponent->getContext();
47  $configData = $context->getDataProvider()->getConfigData();
48  $context->getDataProvider()
49  ->setConfigData(
50  array_replace($configData, $widgetData)
51  );
52  }
53 
63  private function addDataToChildComponents(UiComponentInterface $uiComponent, array $data)
64  {
65  foreach ($uiComponent->getChildComponents() as $childComponent) {
66  if (isset($data[$childComponent->getName()]) && is_array($data[$childComponent->getName()])) {
67  $childComponent->setData(
68  'config',
69  array_replace_recursive(
70  $childComponent->getData('config'),
71  $data[$childComponent->getName()]
72  )
73  );
74  }
75 
76  $this->addDataToChildComponents($childComponent, $data);
77  }
78  }
79 
88  public function renderApp($data = [])
89  {
91  $uiComponent = $this->uiComponentGenerator
92  ->generateUiComponent($this->getData('uiComponent'), $this->getLayout());
93  $this->injectDataInDataSource($uiComponent, $this->getData());
94  $this->addDataToChildComponents($uiComponent, $data);
95  return (string) $uiComponent->render();
96  }
97 }
getData($key='', $index=null)
Definition: DataObject.php:119
__construct(Template\Context $context, UiComponentGenerator $uiComponentGenerator, array $data=[])
Definition: Wrapper.php:29