StructureManager.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Model\View\Layout;
  7. use Magento\Framework\View\Layout\ScheduledStructure;
  8. use Magento\Framework\View\Layout\Data\Structure;
  9. /**
  10. * Class StructureManager
  11. *
  12. * Is responsible for managing layout structure items
  13. * By using this class developer can remove layout entities (block, uiComponent) from scheduled structure
  14. * Removed entities will not appear at rendered page
  15. * @api
  16. * @since 100.2.0
  17. */
  18. class StructureManager
  19. {
  20. /**
  21. * Removes scheduled element from structure by name, also removes child elements
  22. *
  23. * @param ScheduledStructure $scheduledStructure
  24. * @param Structure $structure
  25. * @param string $elementName
  26. * @param bool $isChild
  27. * @return bool
  28. * @since 100.2.0
  29. */
  30. public function removeElement(
  31. ScheduledStructure $scheduledStructure,
  32. Structure $structure,
  33. $elementName,
  34. $isChild = false
  35. ) {
  36. $elementsToRemove = array_keys($structure->getChildren($elementName));
  37. $scheduledStructure->unsetElement($elementName);
  38. foreach ($elementsToRemove as $element) {
  39. $this->removeElement($scheduledStructure, $structure, $element, true);
  40. }
  41. if (!$isChild) {
  42. $structure->unsetElement($elementName);
  43. }
  44. return true;
  45. }
  46. }