Renderer.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Store\Model\Address;
  7. use Magento\Framework\Event\ManagerInterface as EventManager;
  8. use Magento\Framework\Filter\FilterManager;
  9. use Magento\Framework\DataObject;
  10. /**
  11. * Class Renderer used for formatting a store address
  12. */
  13. class Renderer
  14. {
  15. const DEFAULT_TEMPLATE = "{{var name}}\n" .
  16. "{{var street_line1}}\n" .
  17. "{{depend street_line2}}{{var street_line2}}\n{{/depend}}" .
  18. "{{depend city}}{{var city}},{{/depend}} {{var region}} {{depend postcode}}{{var postcode}},{{/depend}}\n" .
  19. "{{var country}}";
  20. /**
  21. * @var EventManager
  22. */
  23. protected $eventManager;
  24. /**
  25. * @var FilterManager
  26. */
  27. protected $filterManager;
  28. /**
  29. * @var string
  30. */
  31. private $template;
  32. /**
  33. * Constructor
  34. *
  35. * @param EventManager $eventManager
  36. * @param FilterManager $filterManager
  37. * @param string $template
  38. */
  39. public function __construct(
  40. EventManager $eventManager,
  41. FilterManager $filterManager,
  42. $template = self::DEFAULT_TEMPLATE
  43. ) {
  44. $this->eventManager = $eventManager;
  45. $this->filterManager = $filterManager;
  46. $this->template = $template;
  47. }
  48. /**
  49. * Format address in a specific way
  50. *
  51. * @param DataObject $storeInfo
  52. * @param string $type
  53. * @return string
  54. */
  55. public function format(DataObject $storeInfo, $type = 'html')
  56. {
  57. $this->eventManager->dispatch('store_address_format', ['type' => $type, 'store_info' => $storeInfo]);
  58. $address = $this->filterManager->template(
  59. $this->template,
  60. ['variables' => $storeInfo->getData()]
  61. );
  62. if ($type == 'html') {
  63. $address = nl2br($address);
  64. }
  65. return $address;
  66. }
  67. }