mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-08-27 10:03:49 +00:00
add homeless to addresses
This commit is contained in:
@@ -60,6 +60,9 @@ class AddressDataMapper implements DataMapperInterface
|
||||
case 'validFrom':
|
||||
$form->setData($address->getValidFrom());
|
||||
break;
|
||||
case 'isNoAddress':
|
||||
$form->setData($address->isNoAddress());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -77,18 +80,25 @@ class AddressDataMapper implements DataMapperInterface
|
||||
$address = new Address();
|
||||
}
|
||||
|
||||
$isNoAddress = false;
|
||||
foreach ($forms as $key => $form) {
|
||||
if ($key === 'isNoAddress') {
|
||||
$isNoAddress = $form->get('isNoAddress')->getData();
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($forms as $key => $form) {
|
||||
/** @var FormInterface $form */
|
||||
switch($key) {
|
||||
case 'postCode':
|
||||
if (!$form->getData() instanceof PostalCode) {
|
||||
if (!$form->getData() instanceof PostalCode && !$isNoAddress) {
|
||||
$address = null;
|
||||
return;
|
||||
}
|
||||
$address->setPostcode($form->getData());
|
||||
break;
|
||||
case 'streetAddress1':
|
||||
if (empty($form->getData())) {
|
||||
if (empty($form->getData()) && !$isNoAddress) {
|
||||
$address = null;
|
||||
return;
|
||||
}
|
||||
@@ -100,6 +110,9 @@ class AddressDataMapper implements DataMapperInterface
|
||||
case 'validFrom':
|
||||
$address->setValidFrom($form->getData());
|
||||
break;
|
||||
case 'isNoAddress':
|
||||
$address->setIsNoAddress($form->getData());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@@ -27,6 +27,7 @@ use Symfony\Component\Form\Extension\Core\Type\DateType;
|
||||
use Chill\MainBundle\Entity\Address;
|
||||
use Chill\MainBundle\Form\Type\PostalCodeType;
|
||||
use Chill\MainBundle\Form\DataMapper\AddressDataMapper;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
|
||||
/**
|
||||
* A type to create/update Address entity
|
||||
@@ -45,7 +46,7 @@ class AddressType extends AbstractType
|
||||
{
|
||||
$builder
|
||||
->add('streetAddress1', TextType::class, array(
|
||||
'required' => true
|
||||
'required' => !$options['has_no_address'] // true if has no address is false
|
||||
))
|
||||
->add('streetAddress2', TextType::class, array(
|
||||
'required' => false
|
||||
@@ -53,7 +54,7 @@ class AddressType extends AbstractType
|
||||
->add('postCode', PostalCodeType::class, array(
|
||||
'label' => 'Postal code',
|
||||
'placeholder' => 'Choose a postal code',
|
||||
'required' => true
|
||||
'required' => !$options['has_no_address'] // true if has no address is false
|
||||
))
|
||||
;
|
||||
|
||||
@@ -67,7 +68,19 @@ class AddressType extends AbstractType
|
||||
);
|
||||
}
|
||||
|
||||
if ($options['null_if_emtpy'] === TRUE) {
|
||||
if ($options['has_no_address']) {
|
||||
$builder
|
||||
->add('isNoAddress', ChoiceType::class, [
|
||||
'required' => true,
|
||||
'choices' => [
|
||||
'address.consider homeless' => true,
|
||||
'address.real address' => false
|
||||
],
|
||||
'label' => 'address.address_homeless'
|
||||
]);
|
||||
}
|
||||
|
||||
if ($options['null_if_empty'] === TRUE) {
|
||||
$builder->setDataMapper(new AddressDataMapper());
|
||||
}
|
||||
}
|
||||
@@ -79,6 +92,9 @@ class AddressType extends AbstractType
|
||||
->setDefined('has_valid_from')
|
||||
->setAllowedTypes('has_valid_from', 'bool')
|
||||
->setDefault('has_valid_from', true)
|
||||
->setDefined('has_no_address')
|
||||
->setDefault('has_no_address', false)
|
||||
->setAllowedTypes('has_no_address', 'bool')
|
||||
->setDefined('null_if_empty')
|
||||
->setDefault('null_if_empty', false)
|
||||
->setAllowedTypes('null_if_empty', 'bool')
|
||||
|
Reference in New Issue
Block a user