Select.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Block\Widget\Grid\Column\Renderer;
  7. /**
  8. * Grid select input column renderer
  9. *
  10. * @api
  11. * @since 100.0.2
  12. */
  13. class Select extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer
  14. {
  15. /**
  16. * @var \Magento\Backend\Block\Widget\Grid\Column\Renderer\Options\Converter
  17. */
  18. protected $_converter;
  19. /**
  20. * @param \Magento\Backend\Block\Context $context
  21. * @param \Magento\Backend\Block\Widget\Grid\Column\Renderer\Options\Converter $converter
  22. * @param array $data
  23. */
  24. public function __construct(
  25. \Magento\Backend\Block\Context $context,
  26. \Magento\Backend\Block\Widget\Grid\Column\Renderer\Options\Converter $converter,
  27. array $data = []
  28. ) {
  29. $this->_converter = $converter;
  30. parent::__construct($context, $data);
  31. }
  32. /**
  33. * Get options from column
  34. *
  35. * @return array
  36. */
  37. protected function _getOptions()
  38. {
  39. return $this->_converter->toFlatArray($this->getColumn()->getOptions());
  40. }
  41. /**
  42. * Renders grid column
  43. *
  44. * @param \Magento\Framework\DataObject $row
  45. * @return string
  46. */
  47. public function render(\Magento\Framework\DataObject $row)
  48. {
  49. $name = $this->getColumn()->getName() ? $this->getColumn()->getName() : $this->getColumn()->getId();
  50. $html = '<select name="' . $this->escapeHtml($name) . '" ' . $this->getColumn()->getValidateClass() . '>';
  51. $value = $row->getData($this->getColumn()->getIndex());
  52. foreach ($this->_getOptions() as $val => $label) {
  53. $selected = $val == $value && $value !== null ? ' selected="selected"' : '';
  54. $html .= '<option value="' . $this->escapeHtml($val) . '"' . $selected . '>';
  55. $html .= $this->escapeHtml($label) . '</option>';
  56. }
  57. $html .= '</select>';
  58. return $html;
  59. }
  60. }