mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
phonenumber type for form
This commit is contained in:
parent
7bd93e53c2
commit
c8c2c4c859
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace Chill\MainBundle\Form\Type;
|
||||
|
||||
use libphonenumber\PhoneNumberFormat;
|
||||
use libphonenumber\PhoneNumberUtil;
|
||||
use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType;
|
||||
use libphonenumber\PhoneNumberType as LibphonenumberPhoneNumberType;
|
||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\OptionsResolver\Options;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
class ChillPhoneNumberType extends AbstractType
|
||||
{
|
||||
private string $defaultCarrierCode;
|
||||
|
||||
private PhoneNumberUtil $phoneNumberUtil;
|
||||
|
||||
public function __construct(ParameterBagInterface $parameterBag)
|
||||
{
|
||||
$this->defaultCarrierCode = $parameterBag->get('chill_main')['phone_helper']['default_carrier_code'];
|
||||
$this->phoneNumberUtil = PhoneNumberUtil::getInstance();
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$resolver
|
||||
->setDefault('default_region', $this->defaultCarrierCode)
|
||||
->setDefault('format', PhoneNumberFormat::NATIONAL)
|
||||
->setDefault('type', \libphonenumber\PhoneNumberType::FIXED_LINE_OR_MOBILE)
|
||||
->setNormalizer('attr', function(Options $options, $value) {
|
||||
if (array_key_exists('placeholder', $value)) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
$examplePhoneNumber = $this->phoneNumberUtil->getExampleNumberForType($this->defaultCarrierCode, $options['type']);
|
||||
|
||||
return array_merge(
|
||||
$value,
|
||||
[
|
||||
'placeholder' => PhoneNumberUtil::getInstance()->format($examplePhoneNumber, $options['format']),
|
||||
]
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
public function getParent()
|
||||
{
|
||||
return PhoneNumberType::class;
|
||||
}
|
||||
|
||||
}
|
@ -13,12 +13,14 @@ namespace Chill\PersonBundle\Form;
|
||||
|
||||
use Chill\MainBundle\Form\Event\CustomizeFormEvent;
|
||||
use Chill\MainBundle\Form\Type\ChillDateType;
|
||||
use Chill\MainBundle\Form\Type\ChillPhoneNumberType;
|
||||
use Chill\MainBundle\Form\Type\PickCenterType;
|
||||
use Chill\PersonBundle\Config\ConfigPersonAltNamesHelper;
|
||||
use Chill\PersonBundle\Entity\Person;
|
||||
use Chill\PersonBundle\Form\Type\GenderType;
|
||||
use Chill\PersonBundle\Form\Type\PersonAltNameType;
|
||||
use Chill\PersonBundle\Security\Authorization\PersonVoter;
|
||||
use libphonenumber\PhoneNumberType;
|
||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
@ -60,11 +62,13 @@ final class CreationPersonType extends AbstractType
|
||||
->add('birthdate', ChillDateType::class, [
|
||||
'required' => false,
|
||||
])
|
||||
->add('phonenumber', TelType::class, [
|
||||
->add('phonenumber', ChillPhoneNumberType::class, [
|
||||
'required' => false,
|
||||
'type' => PhoneNumberType::FIXED_LINE
|
||||
])
|
||||
->add('mobilenumber', TelType::class, [
|
||||
->add('mobilenumber', ChillPhoneNumberType::class, [
|
||||
'required' => false,
|
||||
'type' => PhoneNumberType::MOBILE,
|
||||
])
|
||||
->add('email', EmailType::class, [
|
||||
'required' => false,
|
||||
|
@ -14,6 +14,7 @@ namespace Chill\PersonBundle\Form;
|
||||
use Chill\CustomFieldsBundle\Form\Type\CustomFieldType;
|
||||
use Chill\MainBundle\Form\Type\ChillCollectionType;
|
||||
use Chill\MainBundle\Form\Type\ChillDateType;
|
||||
use Chill\MainBundle\Form\Type\ChillPhoneNumberType;
|
||||
use Chill\MainBundle\Form\Type\ChillTextareaType;
|
||||
use Chill\MainBundle\Form\Type\CommentType;
|
||||
use Chill\MainBundle\Form\Type\PickCivilityType;
|
||||
@ -135,45 +136,25 @@ class PersonType extends AbstractType
|
||||
}
|
||||
|
||||
if ('visible' === $this->config['phonenumber']) {
|
||||
$examplePhoneNumber = PhoneNumberUtil::getInstance()
|
||||
->getExampleNumberForType(
|
||||
$this->parameterBag->get('chill_main.phone_helper')['default_carrier_code'],
|
||||
LibphonenumberPhoneNumberType::FIXED_LINE
|
||||
);
|
||||
|
||||
$builder
|
||||
->add(
|
||||
'phonenumber',
|
||||
PhoneNumberType::class,
|
||||
ChillPhoneNumberType::class,
|
||||
[
|
||||
'default_region' => $this->parameterBag->get('chill_main.phone_helper')['default_carrier_code'],
|
||||
'format' => PhoneNumberFormat::NATIONAL,
|
||||
'required' => false,
|
||||
'attr' => [
|
||||
'placeholder' => PhoneNumberUtil::getInstance()->format($examplePhoneNumber, PhoneNumberFormat::NATIONAL),
|
||||
],
|
||||
'type' => \libphonenumber\PhoneNumberType::FIXED_LINE,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
if ('visible' === $this->config['mobilenumber']) {
|
||||
$examplePhoneNumber = PhoneNumberUtil::getInstance()
|
||||
->getExampleNumberForType(
|
||||
$this->parameterBag->get('chill_main.phone_helper')['default_carrier_code'],
|
||||
LibphonenumberPhoneNumberType::MOBILE
|
||||
);
|
||||
|
||||
$builder
|
||||
->add(
|
||||
'mobilenumber',
|
||||
PhoneNumberType::class,
|
||||
ChillPhoneNumberType::class,
|
||||
[
|
||||
'default_region' => $this->parameterBag->get('chill_main.phone_helper')['default_carrier_code'],
|
||||
'format' => PhoneNumberFormat::NATIONAL,
|
||||
'type' => \libphonenumber\PhoneNumberType::MOBILE,
|
||||
'required' => false,
|
||||
'attr' => [
|
||||
'placeholder' => PhoneNumberUtil::getInstance()->format($examplePhoneNumber, PhoneNumberFormat::NATIONAL),
|
||||
],
|
||||
]
|
||||
)
|
||||
->add('acceptSMS', CheckboxType::class, [
|
||||
@ -182,7 +163,7 @@ class PersonType extends AbstractType
|
||||
}
|
||||
|
||||
$builder->add('otherPhoneNumbers', ChillCollectionType::class, [
|
||||
'entry_type' => PersonPhoneType::class,
|
||||
'entry_type' => ChillPhoneNumberType::class,
|
||||
'button_add_label' => 'Add new phone',
|
||||
'button_remove_label' => 'Remove phone',
|
||||
'required' => false,
|
||||
|
Loading…
x
Reference in New Issue
Block a user