DataProvider.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Ui\Component;
  7. use Magento\Customer\Api\Data\AttributeMetadataInterface;
  8. use Magento\Customer\Ui\Component\Listing\AttributeRepository;
  9. use Magento\Framework\Api\FilterBuilder;
  10. use Magento\Framework\Api\Search\SearchCriteriaBuilder;
  11. use Magento\Framework\App\RequestInterface;
  12. use Magento\Framework\View\Element\UiComponent\DataProvider\Reporting;
  13. class DataProvider extends \Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
  14. {
  15. /**
  16. * @var AttributeRepository
  17. */
  18. private $attributeRepository;
  19. /**
  20. * @param string $name
  21. * @param string $primaryFieldName
  22. * @param string $requestFieldName
  23. * @param Reporting $reporting
  24. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  25. * @param RequestInterface $request
  26. * @param FilterBuilder $filterBuilder
  27. * @param AttributeRepository $attributeRepository
  28. * @param array $meta
  29. * @param array $data
  30. * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  31. */
  32. public function __construct(
  33. $name,
  34. $primaryFieldName,
  35. $requestFieldName,
  36. Reporting $reporting,
  37. SearchCriteriaBuilder $searchCriteriaBuilder,
  38. RequestInterface $request,
  39. FilterBuilder $filterBuilder,
  40. AttributeRepository $attributeRepository,
  41. array $meta = [],
  42. array $data = []
  43. ) {
  44. $this->attributeRepository = $attributeRepository;
  45. parent::__construct(
  46. $name,
  47. $primaryFieldName,
  48. $requestFieldName,
  49. $reporting,
  50. $searchCriteriaBuilder,
  51. $request,
  52. $filterBuilder,
  53. $meta,
  54. $data
  55. );
  56. }
  57. /**
  58. * {@inheritdoc}
  59. */
  60. public function getData()
  61. {
  62. $data = parent::getData();
  63. foreach ($this->attributeRepository->getList() as $attributeCode => $attributeData) {
  64. foreach ($data['items'] as &$item) {
  65. if (isset($item[$attributeCode]) && !empty($attributeData[AttributeMetadataInterface::OPTIONS])) {
  66. $item[$attributeCode] = explode(',', $item[$attributeCode]);
  67. }
  68. }
  69. }
  70. return $data;
  71. }
  72. }