m-adamski / symfony-phone-number-bundle
Bundle for Symfony which integrates with the libphonenumber library
Installs: 9 243
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=8.2
- ext-json: *
- ext-mbstring: *
- giggsey/libphonenumber-for-php: ^8.13
- symfony/form: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/intl: ^7.0
- symfony/twig-bundle: ^7.0
- symfony/validator: ^7.0
Requires (Dev)
- kint-php/kint: ^5.0
README
Custom PhoneNumber Bundle integrating libphonenumber library into Symfony 4 project. This bundle is inspired by PhoneNumberBundle but simplified and created for own projects.
This bundle is compatible with Symfony 4.1 and Symfony 5.0. Symfony 3.4 compatibility abandoned.
Installation
Use Composer to install this bundle into Symfony 4 project:
$ composer require m-adamski/symfony-phone-number-bundle
Configuration
Register new Doctrine Type in config/packages/doctrine.yaml
doctrine: dbal: types: phone_number: Adamski\Symfony\PhoneNumberBundle\Doctrine\DBAL\Types\PhoneNumberType
This Bundle provide type template for Bootstrap 4. Register it in config/packages/twig.yaml
twig: form_themes: - '@PhoneNumber/Form/phone_number_widget.html.twig'
You can also overwrite default Symfony Bootstrap 4 template by adding - '@PhoneNumber/Form/bootstrap_4_layout.html.twig'
into form_themes
parameter:
twig: form_themes: - '@PhoneNumber/Form/bootstrap_4_layout.html.twig' - '@PhoneNumber/Form/phone_number_widget.html.twig'
How to use it?
Bundle provide additional Doctrine Type and Form Type. First, edit entity to use PhoneNumber Type:
use Adamski\Symfony\PhoneNumberBundle\Model\PhoneNumber; use Adamski\Symfony\PhoneNumberBundle\Validator\Constraints\PhoneNumber as AssertPhoneNumber; /** * @var string * @AssertPhoneNumber * @ORM\Column(name="phone_number", type="phone_number", nullable=true) */ protected $phoneNumber;
Now it's time to provide changes in Form Type:
use Adamski\Symfony\PhoneNumberBundle\Form\PhoneNumberType; public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add("phoneNumber", PhoneNumberType::class, [ "label" => "Phone number", "preferred" => "PL", "required" => false ]); }
The displayed phone number in the template can be formatted according to the given pattern.
For this purpose, the Twig phone_number
filter has been implemented.
{{ current_customer.phoneNumber|phone_number('E164') }} {{ current_customer.phoneNumber|phone_number('RFC3966') }} {{ current_customer.phoneNumber|phone_number('NATIONAL') }} {{ current_customer.phoneNumber|phone_number('INTERNATIONAL') }}
License
MIT