Skip to content
Bundle for Symfony 4 which integrates with the libphonenumber library
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.editorconfig
.gitignore
LICENSE
README.md
composer.json
composer.lock

README.md

PhoneNumber Bundle for Symfony 4

Custom PhoneNumber Bundle integrating libphonenumber library into Symfony 4 project. This bundle is inspired by PhoneNumberBundle but simplified and created for own projects.

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

You can’t perform that action at this time.