Skip to content

Commit

Permalink
Merge pull request #15 from stefandoorn/feature/remove-duplicate-addi…
Browse files Browse the repository at this point in the history
…tion

Make addition empty if the same as street + number (autofill)
  • Loading branch information
stefandoorn authored Jun 26, 2019
2 parents 99c68a7 + a119cb4 commit 70304f7
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

declare(strict_types=1);

namespace StefanDoorn\SyliusStreetNumberPlugin\Form\EventSubscriber;

use StefanDoorn\SyliusStreetNumberPlugin\Entity\Interfaces\AddressInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;

final class RemoveDuplicateAdditionEventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
FormEvents::POST_SUBMIT => 'onPostSubmit',
];
}

public function onPostSubmit(FormEvent $event): void
{
/** @var AddressInterface $data */
$data = $event->getData();

if (!$data instanceof AddressInterface) {
return;
}

if (empty($data->getAddition())) {
return;
}

$streetNumber = sprintf('%s %s', $data->getStreetWithoutNumberAndAddition(), $data->getNumber());

if ($data->getAddition() !== $streetNumber) {
return;
}

$data->setAddition(null);
$data->setStreet($streetNumber);
}
}
11 changes: 9 additions & 2 deletions src/Form/Extension/AddressTypeStreetNumberAdditionExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,15 @@ final class AddressTypeStreetNumberAdditionExtension extends AbstractTypeExtensi
/** @var EventSubscriberInterface */
private $appendAdditionDataToStreetFieldEventSubscriber;

public function __construct(EventSubscriberInterface $appendAdditionDataToStreetFieldEventSubscriber)
{
/** @var EventSubscriberInterface */
private $removeDuplicateAdditionEventSubscriber;

public function __construct(
EventSubscriberInterface $appendAdditionDataToStreetFieldEventSubscriber,
EventSubscriberInterface $removeDuplicateAdditionEventSubscriber
) {
$this->appendAdditionDataToStreetFieldEventSubscriber = $appendAdditionDataToStreetFieldEventSubscriber;
$this->removeDuplicateAdditionEventSubscriber = $removeDuplicateAdditionEventSubscriber;
}

public function buildForm(FormBuilderInterface $builder, array $options)
Expand All @@ -33,6 +39,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
);

$builder->addEventSubscriber($this->appendAdditionDataToStreetFieldEventSubscriber);
$builder->addEventSubscriber($this->removeDuplicateAdditionEventSubscriber);
}

public function getExtendedType()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@
<services>
<service id="stefandoorn.sylius_street_number_plugin.form.extension.type.address_street_number_addition" class="StefanDoorn\SyliusStreetNumberPlugin\Form\Extension\AddressTypeStreetNumberAdditionExtension">
<argument type="service" id="stefandoorn.sylius_street_number_plugin.form.event_listener.append_addition_data_to_street_field_event_subscriber" />
<argument type="service" id="stefandoorn.sylius_street_number_plugin.form.event_listener.remove_duplicate_addition_event_subscriber" />

<tag name="form.type_extension" extended_type="Sylius\Bundle\AddressingBundle\Form\Type\AddressType" priority="-10" />
</service>

<service id="stefandoorn.sylius_street_number_plugin.form.event_listener.append_addition_data_to_street_field_event_subscriber" class="StefanDoorn\SyliusStreetNumberPlugin\Form\EventSubscriber\AppendDataToStreetFieldEventSubscriber">
<argument>addition</argument>
</service>

<service id="stefandoorn.sylius_street_number_plugin.form.event_listener.remove_duplicate_addition_event_subscriber" class="StefanDoorn\SyliusStreetNumberPlugin\Form\EventSubscriber\RemoveDuplicateAdditionEventSubscriber" />
</services>
</container>

0 comments on commit 70304f7

Please sign in to comment.