DataSource.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Ui\Component;
  7. use Magento\Framework\View\Element\UiComponent\ContextInterface;
  8. use Magento\Framework\View\Element\UiComponent\DataSourceInterface;
  9. use Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface;
  10. /**
  11. * @api
  12. * @since 100.0.2
  13. */
  14. class DataSource extends AbstractComponent implements DataSourceInterface
  15. {
  16. const NAME = 'dataSource';
  17. /**
  18. * @var DataProviderInterface
  19. */
  20. protected $dataProvider;
  21. /**
  22. * Constructor
  23. *
  24. * @param ContextInterface $context
  25. * @param DataProviderInterface $dataProvider
  26. * @param array $components
  27. * @param array $data
  28. */
  29. public function __construct(
  30. ContextInterface $context,
  31. DataProviderInterface $dataProvider,
  32. array $components = [],
  33. array $data = []
  34. ) {
  35. $this->dataProvider = $dataProvider;
  36. $context->setDataProvider($dataProvider);
  37. parent::__construct($context, $components, $data);
  38. }
  39. /**
  40. * Get component name
  41. *
  42. * @return string
  43. */
  44. public function getComponentName()
  45. {
  46. return static::NAME;
  47. }
  48. /**
  49. * Prepare component configuration
  50. *
  51. * @return void
  52. */
  53. public function prepare()
  54. {
  55. $jsConfig = $this->getJsConfig($this);
  56. unset($jsConfig['extends']);
  57. $this->getContext()->addComponentDefinition($this->getComponentName(), $jsConfig);
  58. }
  59. /**
  60. * @return DataProviderInterface
  61. */
  62. public function getDataProvider()
  63. {
  64. return $this->dataProvider;
  65. }
  66. }