ExportButton.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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\UrlInterface;
  9. /**
  10. * Class ExportButton
  11. */
  12. class ExportButton extends AbstractComponent
  13. {
  14. /**
  15. * Component name
  16. */
  17. const NAME = 'exportButton';
  18. /**
  19. * @var \Magento\Framework\UrlInterface
  20. */
  21. protected $urlBuilder;
  22. /**
  23. * @param ContextInterface $context
  24. * @param UrlInterface $urlBuilder
  25. * @param array $components
  26. * @param array $data
  27. */
  28. public function __construct(
  29. ContextInterface $context,
  30. UrlInterface $urlBuilder,
  31. array $components = [],
  32. array $data = []
  33. ) {
  34. parent::__construct($context, $components, $data);
  35. $this->urlBuilder = $urlBuilder;
  36. }
  37. /**
  38. * Get component name
  39. *
  40. * @return string
  41. */
  42. public function getComponentName()
  43. {
  44. return static::NAME;
  45. }
  46. /**
  47. * @return void
  48. */
  49. public function prepare()
  50. {
  51. $context = $this->getContext();
  52. $config = $this->getData('config');
  53. if (isset($config['options'])) {
  54. $options = [];
  55. foreach ($config['options'] as $option) {
  56. $additionalParams = $this->getAdditionalParams($config, $context);
  57. $option['url'] = $this->urlBuilder->getUrl($option['url'], $additionalParams);
  58. $options[] = $option;
  59. }
  60. $config['options'] = $options;
  61. $this->setData('config', $config);
  62. }
  63. parent::prepare();
  64. }
  65. /**
  66. * Get export button additional parameters
  67. *
  68. * @param array $config
  69. * @param ContextInterface $context
  70. * @return array
  71. */
  72. protected function getAdditionalParams($config, $context)
  73. {
  74. $additionalParams = [];
  75. if (isset($config['additionalParams'])) {
  76. foreach ($config['additionalParams'] as $paramName => $paramValue) {
  77. if ('*' == $paramValue) {
  78. $paramValue = $context->getRequestParam($paramName);
  79. }
  80. $additionalParams[$paramName] = $paramValue;
  81. }
  82. }
  83. return $additionalParams;
  84. }
  85. }