cforge-2.0.x-dev/modules/cforge_address/src/AddressSubscriber.php
modules/cforge_address/src/AddressSubscriber.php
<?php
namespace Drupal\cforge_address;
use Drupal\address\Event\AddressFormatEvent;
use Drupal\address\Event\AddressEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Rewrites the french address format
*/
class AddressSubscriber implements EventSubscriberInterface {
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() : array {
$events[AddressEvents::ADDRESS_FORMAT] = [['rewriteAddress']];
return $events;
}
/**
* Ensure every address format has %dependentLocality, sticking it on the end
* if necessary, that that field is required, and called neighbourhood
*/
public function rewriteAddress(AddressFormatEvent $event) {
$addressFormat = $event->getDefinition();
// Ensure every format contrains the 'neighbourhood' field.
if (!strpos($addressFormat['format'], '%dependentLocality')) {
$addressFormat['format'] .= "\n%dependentLocality";
}
$addressFormat['required_fields'][] = 'dependentLocality';
$addressFormat['dependent_locality_type'] = 'neighborhood';
$event->setDefinition($addressFormat);
}
}
