/zip-code-validator

Constraint Class for international Zipcode Validation

Primary LanguagePHPMIT LicenseMIT

Constraint Class for international Zipcode Validation

##Installation This package uses Composer, please checkout the composer website for more information.

The following command will install zip-code-validator into your project. It will also add a new entry in your composer.json and update the composer.lock as well.

$ composer require barbieswimcrew/zip-code-validator

This package follows the PSR-4 convention names for its classes, which means you can easily integrate zip-code-validator classes loading in your own autoloader.

##What now? For validating a zip code you need to instantiate a new ZipCode class provided by this package to set it as a constraint to your form field, for example:

<?php
//...
$form = $this->createFormBuilder($address)
            ->add('zipcode', TextType::class, array(
                'constraints' => array(
                    new ZipCodeValidator\Constraints\ZipCode(array(
                        'iso' => 'DE'
                    ))
                )
            ))
            ->add('save', SubmitType::class, array('label' => 'Create Task'))
            ->getForm();

Another way would be to use the constraint as an annotation of a class property, for example:

<?php

use ZipCodeValidator\Constraints\ZipCode;

class Address
{
    /**
     * @ZipCode(iso="DE")
     */
    protected $zipCode;
}

Please consider to inject a valid ISO 3166 2-letter country code (e.g. DE, US, FR)!

Use a getter to inject the country code dynamically

If you have a form, in which the user can select a country, you may want to validate the zip code dynamically. In this case you can use the getter option instead:

<?php

use ZipCodeValidator\Constraints\ZipCode;

class Address
{
    /**
     * @ZipCode(getter="getCountry")
     */
    protected $zipCode;

    protected $country;

    public function getCountry()
    {
        return $this->country;
    }
}

To disable that the validator throws an exception, when the zip code pattern is not available for a country, you can set the strict option to FALSE.

    /**
     * @ZipCode(getter="getCountry", strict=false)
     */
    protected $zipCode;
}

Copying / License

This repository is distributed under the MIT License (MIT). You can find the whole license text in the LICENSE file.