ModifierPoolDataProvider.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Ui\DataProvider;
  7. use Magento\Framework\App\ObjectManager;
  8. use Magento\Ui\DataProvider\Modifier\ModifierInterface;
  9. use Magento\Ui\DataProvider\Modifier\Pool;
  10. use Magento\Ui\DataProvider\Modifier\PoolInterface;
  11. class ModifierPoolDataProvider extends AbstractDataProvider
  12. {
  13. /**
  14. * @var PoolInterface
  15. */
  16. private $pool;
  17. /**
  18. * @param string $name
  19. * @param string $primaryFieldName
  20. * @param string $requestFieldName
  21. * @param array $meta
  22. * @param array $data
  23. * @param PoolInterface|null $pool
  24. */
  25. public function __construct(
  26. $name,
  27. $primaryFieldName,
  28. $requestFieldName,
  29. array $meta = [],
  30. array $data = [],
  31. PoolInterface $pool = null
  32. ) {
  33. parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
  34. $this->pool = $pool ?: ObjectManager::getInstance()->get(PoolInterface::class);
  35. }
  36. /**
  37. * @inheritdoc
  38. */
  39. public function getData()
  40. {
  41. $this->getConfigData();
  42. foreach ($this->pool->getModifiersInstances() as $modifier) {
  43. $this->data = $modifier->modifyData($this->data);
  44. }
  45. return $this->data;
  46. }
  47. /**
  48. * @inheritdoc
  49. */
  50. public function getMeta()
  51. {
  52. $this->meta = parent::getMeta();
  53. /** @var ModifierInterface $modifier */
  54. $this->pool->getModifiers();
  55. foreach ($this->pool->getModifiersInstances() as $modifier) {
  56. $this->meta = $modifier->modifyMeta($this->meta);
  57. }
  58. return $this->meta;
  59. }
  60. }