State.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\LayeredNavigation\Block\Navigation;
  7. use Magento\Framework\View\Element\Template;
  8. /**
  9. * Layered navigation state
  10. *
  11. * @api
  12. * @since 100.0.2
  13. */
  14. class State extends \Magento\Framework\View\Element\Template
  15. {
  16. /**
  17. * @var string
  18. */
  19. protected $_template = 'Magento_LayeredNavigation::layer/state.phtml';
  20. /**
  21. * Catalog layer
  22. *
  23. * @var \Magento\Catalog\Model\Layer
  24. */
  25. protected $_catalogLayer;
  26. /**
  27. * @param \Magento\Framework\View\Element\Template\Context $context
  28. * @param \Magento\Catalog\Model\Layer\Resolver $layerResolver
  29. * @param array $data
  30. */
  31. public function __construct(
  32. \Magento\Framework\View\Element\Template\Context $context,
  33. \Magento\Catalog\Model\Layer\Resolver $layerResolver,
  34. array $data = []
  35. ) {
  36. $this->_catalogLayer = $layerResolver->get();
  37. parent::__construct($context, $data);
  38. }
  39. /**
  40. * Retrieve active filters
  41. *
  42. * @return array
  43. */
  44. public function getActiveFilters()
  45. {
  46. $filters = $this->getLayer()->getState()->getFilters();
  47. if (!is_array($filters)) {
  48. $filters = [];
  49. }
  50. return $filters;
  51. }
  52. /**
  53. * Retrieve Clear Filters URL
  54. *
  55. * @return string
  56. */
  57. public function getClearUrl()
  58. {
  59. $filterState = [];
  60. foreach ($this->getActiveFilters() as $item) {
  61. $filterState[$item->getFilter()->getRequestVar()] = $item->getFilter()->getCleanValue();
  62. }
  63. $params['_current'] = true;
  64. $params['_use_rewrite'] = true;
  65. $params['_query'] = $filterState;
  66. $params['_escape'] = true;
  67. return $this->_urlBuilder->getUrl('*/*/*', $params);
  68. }
  69. /**
  70. * Retrieve Layer object
  71. *
  72. * @return \Magento\Catalog\Model\Layer
  73. */
  74. public function getLayer()
  75. {
  76. if (!$this->hasData('layer')) {
  77. $this->setLayer($this->_catalogLayer);
  78. }
  79. return $this->_getData('layer');
  80. }
  81. }