src/Module/Address/Subscriber/AddressFormSubscriber.php line 55

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Module\Address\Subscriber;
  4. use App\Module\Address\Renderer\AddressFormRenderer;
  5. use App\Module\ShortSimpleCheckout\Event\View\ShippingPaymentDispatchEvent;
  6. use App\Module\ShortSimpleCheckout\Events;
  7. use App\Module\ShortSimpleCheckout\Exception\VariableAlreadyDefinedException;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Twig\Error\Error;
  10. /**
  11. * AddressFormSubscriber
  12. *
  13. * @package App\Module\Address\Subscriber
  14. */
  15. final class AddressFormSubscriber implements EventSubscriberInterface
  16. {
  17. private AddressFormRenderer $renderer;
  18. /**
  19. * AddressFormSubscriber constructor
  20. *
  21. * @param AddressFormRenderer $renderer
  22. */
  23. public function __construct(AddressFormRenderer $renderer)
  24. {
  25. $this->renderer = $renderer;
  26. }
  27. /**
  28. * Get subscribed events
  29. *
  30. * @return array
  31. */
  32. public static function getSubscribedEvents(): array
  33. {
  34. return [
  35. Events::SHIPPING_PAYMENT_INDEX_DISPATCH => 'addCreateAddressFormToView'
  36. ];
  37. }
  38. /**
  39. * Add rendered createAddressForms to the event
  40. *
  41. * @param ShippingPaymentDispatchEvent $event
  42. *
  43. * @throws VariableAlreadyDefinedException on duplicate event variable
  44. * @throws Error on twig render errors
  45. *
  46. * @return ShippingPaymentDispatchEvent
  47. */
  48. public function addCreateAddressFormToView(ShippingPaymentDispatchEvent $event): ShippingPaymentDispatchEvent
  49. {
  50. $event->addVariable('createBillingAddressForm', $this->renderer->renderCreateBillingAddressForm());
  51. $event->addVariable('createPrivateCustomerAddressForm', $this->renderer->renderCreatePrivateCustomerAddressForm());
  52. $event->addVariable('createShippingAddressForm', $this->renderer->renderCreateShippingAddressForm());
  53. $event->addVariable('createPrivateShippingAddressForm', $this->renderer->renderCreatePrivateShippingAddressForm());
  54. return $event;
  55. }
  56. }