Renderer.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\Order\Address;
  7. use Magento\Customer\Model\Address\Config as AddressConfig;
  8. use Magento\Framework\Event\ManagerInterface as EventManager;
  9. use Magento\Sales\Model\Order\Address;
  10. /**
  11. * Class Renderer used for formatting an order address
  12. * @api
  13. * @since 100.0.2
  14. */
  15. class Renderer
  16. {
  17. /**
  18. * @var AddressConfig
  19. */
  20. protected $addressConfig;
  21. /**
  22. * @var EventManager
  23. */
  24. protected $eventManager;
  25. /**
  26. * Constructor
  27. *
  28. * @param AddressConfig $addressConfig
  29. * @param EventManager $eventManager
  30. */
  31. public function __construct(
  32. AddressConfig $addressConfig,
  33. EventManager $eventManager
  34. ) {
  35. $this->addressConfig = $addressConfig;
  36. $this->eventManager = $eventManager;
  37. }
  38. /**
  39. * Format address in a specific way
  40. *
  41. * @param Address $address
  42. * @param string $type
  43. * @return string|null
  44. */
  45. public function format(Address $address, $type)
  46. {
  47. $this->addressConfig->setStore($address->getOrder()->getStoreId());
  48. $formatType = $this->addressConfig->getFormatByCode($type);
  49. if (!$formatType || !$formatType->getRenderer()) {
  50. return null;
  51. }
  52. $this->eventManager->dispatch('customer_address_format', ['type' => $formatType, 'address' => $address]);
  53. return $formatType->getRenderer()->renderArray($address->getData());
  54. }
  55. }