Skip to content

phil/phone-bundle

alpha

A phone number field, a validation constraint, a column type and Twig filters for Symfony.

phil/phone-bundle brings phil/phone into a Symfony application. PhoneType is a tel field that reads a number typed without its country code in a default country, the bundle's default_region unless the field names its own. It refuses a number in no numbering plan, and shows a number of its country nationally and any other internationally. The constraint ValidPhoneNumber accepts a valid number of the types and countries it names, all of them by default. With DoctrineBundle, the column type phil_phone stores a number in E.164 with its extension, and Twig gets the filters phone and phone_link. Messages come in English and French.

It is for Symfony applications whose forms collect phone numbers: a member's mobile, a shop's line, a contact at an organisation. The default country lets people type numbers as they write them at home. The constraint lets a form ask for a mobile only, or for a number from Canada or the United States only.

Use phil/phone directly outside Symfony or inside a domain model. The bundle holds no numbering rule: parsing, validation and formatting are the library's, and the bundle wires them into Symfony Form, Validator, Doctrine DBAL and Twig.

Status

PartState
PhoneType: a number typed with or without its country code, refused when in no planImplemented and tested
ValidPhoneNumber: a valid number, of accepted types and countriesImplemented and tested
The column type phil_phoneImplemented and tested
Twig: phone, phone_linkImplemented and tested
Messages in English and FrenchImplemented and tested

Documentation

DocumentWhat it covers
InstallationRequirements, installing, registering, default_region.
Forms and validationPhoneType and ValidPhoneNumber.
DoctrineThe column type phil_phone.
TwigThe two filters.
Extension pointsWhat an application implements, configures, replaces or relies on.
TestingHow the bundle is tested.
ReferenceEvery type of the bundle.

Quick start

composer require phil/phone-bundle
# config/packages/phil_phone.yaml
phil_phone:
    default_region: CA
$builder->add('phone', PhoneType::class);
{% set link = shop.phone|phone_link %}
{% if link %}<a href="{{ link }}">{{ shop.phone|phone('national') }}</a>{% endif %}

Requirements

PHP 8.5 or later; phil/phone 0.1; symfony/config, symfony/dependency-injection, symfony/form, symfony/options-resolver and symfony/validator 8.2 or later. Doctrine DBAL and Twig are optional.

Contributing

Contributions are welcome on the PHIL monorepo: read the contribution guide and the code of conduct. Report a vulnerability privately, as the security policy explains, never in a public issue.

License

MIT, © Philippe Gamache, doing business as Le Gnome Archiviste; a Parler Haut Interagir Librement project. See LICENSE.