Aplus Framework Docs

Validation

Aplus Framework Validation Library

Aplus Framework Validation Library.

Installation

The installation of this library can be done with Composer:

composer require aplus/validation

Basic Usage

Validation logic typically occurs as follows:

use Framework\Validation\Validation;

$validation = new Validation();
$validation->setRule('email', 'required|email'); // static

$validated = $validation->validate($_POST); // bool

if ($validated) {
    echo 'Validated!';
} else {
    echo 'Invalid data:';
    echo '<ul>';
    foreach ($validation->getErrors() as $error) {
        echo "<li>{$error}</li>";
    }
    echo '</ul>';
}

First load the Validation class. Then the rules are drafted and finally validated. Then a response is shown if the validation was valid or not.

Setting Rules

Rules can be set individually by the setRule method or several at once by setRules. The first argument is the name of the field and the second is the rules, which can be defined by string separating them with a pipe or by having an array of rules as values.

$validation->setRule('email', 'required|email'); // static
$validation->setRule('firstname', ['required', 'minLength:2']); // static

$validation->setRules([
    'lastname' => 'required|minLength:2|maxLength:32'
]); // static

Setting Labels

Error messages show field name as default. And often you need to show a custom label like First Name instead of firstname.

Labels can be defined individually or by an array.:

$validation->setLabel('email', 'E-mail'); // static
$validation->setLabel('firstname', 'First Name'); // static
// or
$validation->setLabels([
    'email' => 'E-mail',
    'firstname' => 'First Name',
]); // static

Getting Errors

Errors can be obtained individually or all at once, as per the example below:

// Email field error message, or null
$error = $validation->getError('email'); // string or null

// All errors
$errors = $validation->getErrors(); // array

Validating

After defining the rules and labels, the validation of the received data occurs through the validate method.

If you only need to validate the received fields, you can use the validateOnly method. Useful for updating only a few fields in the database.

// Validates all fields
$validated = $validation->validate($data); // bool

// Validates only received fields
$validated = $validation->validateOnly($data); // bool

Validator Check

To validate only one field is possible to use only the Validator:

use Framework\Validation\Validator;

$validated = Validator::alpha('name', $data); // bool

Working with Arrays

Validator uses the ArraySimple class to extract fields and get the correct data value.

use Framework\Validation\Validation;

$validation = new Validation();
$validation->setLabel('user[pass]', 'Password') // static
           ->setRule('user[pass]', 'required'); // static

$data = [
    'user' => [
        'pass' => 'secret',
    ],
];

$validated = $validation->validate($data); // true

Custom Validator

It is possible to create a validator with your custom rules.

use Framework\Validation\Validator;

class CustomValidator extends Validator
{
    public static function phone(string $field, array $data): bool
    {
        $data = static::getData($field, $data);
        if ($data === null) {
            return false;
        }
        return \preg_match('/^\d{4}-\d{4}$/', $data);        
    }
}

Do not forget to create the validation language file with your rules.

File Languages/en/validation.php:

return [
    'phone' => 'The {field} field requires a valid phone number.'
];

So, let the Validation know about your customizations:

use CustomValidator;
use Framework\Language\Language;
use Framework\Validation\Validation;

$language = new Language();
$language->addDirectory(__DIR__ . '/Languages');

$validation = new Validation([CustomValidator::class], $language);

$validation->setRule('telephone', 'required|phone'); // static

$validated = $validation->validate($_POST); // bool

$errors = $validation->getErrors(); // array

Available Rules

The available rules are:

alpha

The field requires only alphabetic characters.

alpha

alphaNumber

The field requires only alphabetic and numeric characters.

alphaNumber

array

The field requires an array.

array

base64

The field requires a valid base64 string.

base64

between

The field must be between {0} and {1}.

between:$min,$max

The rule must take two parameters: $min and $max.

$min is the minimum value.

$max is the maximum value.

blank

If the field has a blank string, the validation passes.

blank

bool

The field requires a boolean value.

bool

datetime

The field must match a required datetime format.

datetime
datetime:$format

The rule can take one parameter: $format.

$format is the date format.

By default the format is Y-m-d H:i:s.

dim

The field requires an image with the exact dimensions of {0} in width and {1} in height.

dim:$width,$height

The rule must take two parameters: $width and $height.

$width is the exact width of the image.

$height is the exact height of the image.

email

The field requires a valid email address.

email

empty

If the field is defined and has an empty value, the validation passes.

empty

equals

The field must be equals the {0} field.

equals:$equalsField

The rule must take one parameter: $equalsField.

$equalsField is the name of the field which must be equal to this one.

ext

The field requires a file with an accepted extension: {args}.

ext:...$allowedExtensions

The rule can take several parameters: ...$allowedExtensions.

...$allowedExtensions is a comma-separated list of file extensions.

float

The field requires a floating point number.

float

greater

The field must be greater than {0}.

greater:$greaterThan

The rule must take one parameter: $greaterThan.

$greaterThan is the value the field must be greater than this.

greaterOrEqual

The field must be greater than or equal to {0}.

greaterOrEqual:$greaterThanOrEqualTo

The rule must take one parameter: $greaterThanOrEqualTo.

$greaterThanOrEqualTo is the value that the field has greater than or equal to this.

hex

The field requires a valid hexadecimal string.

hex

hexColor

The field requires a valid hexadecimal color.

hexColor

image

The field requires an image.

image

in

The field must have one of the listed values.

in:$in,...$others

The rule must take one parameter: $in. And also ...$others.

$in is a value required to be in.

...$others are other valid values to be in.

int

The field requires an integer.

int

ip

The field requires a valid IP address.

ip
ip:$version

The rule can take one parameter: $version.

$version can be 0 for IPv4 and IPv6. 4 for IPv4 or 6 for IPv6.

isset

The field must be sent.

isset

json

The field requires a valid JSON string.

json

latin

The field requires only latin characters.

latin

length

The field requires exactly {0} characters in length.

length:$length

The rule can take one parameter: $length.

$length is the exact number of characters the field must receive.

less

The field must be less than {0}.

less:$lessThan

The rule can take one parameter: $lessThan.

$lessThan is the value that the field has less than this.

lessOrEqual

The field must be less than or equal to {0}.

lessOrEqual:$lessThanOrEqualTo

The rule can take one parameter: $lessThanOrEqualTo.

$lessThanOrEqualTo is the value that the field has less than or equal to this.

maxDim

The field requires an image that does not exceed the maximum dimensions of {0} in width and {1} in height.

maxDim:$width,$height

The rule can take two parameters: $width and $height.

$width is the maximum width the image can be.

$height is the maximum height the image can be.

maxLength

The field requires {0} or less characters in length.

maxLength:$maxLength

The rule can take one parameter: $maxLength.

$maxLength is the maximum amount of characters that the field must receive.

maxSize

The field requires a file that does not exceed the maximum size of {0} kilobytes.

maxSize:$kilobytes

The rule can take one parameter: $kilobytes.

$kilobytes is the maximum number of kilobytes that the field file can receive.

md5

The field requires a valid MD5 hash.

md5

mimes

The field requires a file with an accepted MIME type: {args}.

mimes:...$allowedTypes

The rule can take many parameters: ...$allowedTypes.

...$allowedTypes are the MIME types of files the field can receive.

minDim

The field requires an image having the minimum dimensions of {0} in width and {1} in height.

minDim:$width,$height

The rule can take two parameters: $width and $height.

$width is the minimum width the image can be.

$height is the minimum height the image can be.

minLength

The field requires {0} or more characters in length.

minLength:$minLength

The rule can take one parameter: $minLength.

$minLength is the minimum number of characters the field must receive.

notBetween

The field can not be between {0} and {1}.

notBetween:$min,$max

The rule can take two parameters: $min and $max.

$min is the minimum value that the field value must not have.

$max is the maximum value the field value must not have.

notEquals

The field can not be equals the {0} field.

notEquals:$diffField

The rule can take one parameter: $diffField.

$diffField is the name of the field that must have a value different from this one.

notIn

The field must have a value other than those listed.

notIn:$notIn,...$others

The rule can take one parameter: $notIn. And also ...$others.

$notIn is the value required not to be in.

...$others are other values to not be in.

notRegex

The field matches a invalid pattern.

notRegex:$pattern

The rule can take one parameter: $pattern.

$pattern is the regular expression that the field value must not match.

null

If the field value is null, the validation passes.

null

number

The field requires only numeric characters.

number

object

The field requires an object.

object

optional

The field is optional. If undefined, validation passes.

optional

regex

The field must match the required pattern.

regex:$pattern

The rule can take one parameter: $pattern.

$pattern is the regular expression that the value of the field must match.

required

The field is required.

required

slug

The field requires a valid slug.

slug

specialChar

The field requires special characters.

specialChar
specialChar:$quantity
specialChar:$quantity,$characters

The rule can take two parameters:: $quantity and $characters.

$quantity x is the number and special characters the field value must have. By default the value is 1.

$characters are the characters considered special. By default they are these: !"#$%&\'()*+,-./:;=<>?@[\]^_`{|}~.

string

The field requires a string.

string

timezone

The field requires a valid timezone.

timezone

uploaded

The field requires a file to be uploaded.

uploaded

url

The field requires a valid URL address.

url

uuid

The field requires a valid UUID.

uuid

Conclusion

Aplus Validation Library is an easy-to-use tool for, beginners and experienced, PHP developers.
It is perfect for validating data coming from a form or API.
The more you use it, the more you will learn.

Did you find something wrong?
Be sure to let us know about it with an issue.
Thank you!

Search results