Skip to content

Getting Started

Requirements

This package requires:

  • PHP 8.4 or higher;
  • Laravel 12 or higher.

Installation

You can install the package using composer:

bash
composer require larapkgs/validation

Quickstart

Validating a single item (e.g. attribute, field, property)

php
<?php

declare(strict_types=1);

use LaraPkgs\Validation\Support\Facades\Validatable;

$validatable = Validatable::item('property')->required()->numeric()->min(10);

$data = [];
$fails = $validatable->fails($data); // true
$passes = $validatable->passes($data); // false
$validated = $validatable->validate($data); // Throws Illuminate\Validation\ValidationException;

$data = ['property' => 100];
$fails = $validatable->fails($data); // false
$passes = $validatable->passes($data); // true
$validated = $validatable->validate($data); // ['property' => 100];

More information about single item validation can be found here.

Validating multiple items

php
<?php

declare(strict_types=1);

use LaraPkgs\Validation\Support\Facades\Validatable;

$validatable = Validatable::collection(
    Validatable::item('name')->required()->string(),
    Validatable::item('email')->required()->string()->email(),
);

$data = [];
$fails = $validatable->fails($data); // true
$passes = $validatable->passes($data); // false
$validated = $validatable->validate($data); // Throws Illuminate\Validation\ValidationException

$data = ['name' => 'John Doe', 'email' => 'j.doe@unknown.com'];
$fails = $validatable->fails($data); // false
$passes = $validatable->passes($data); // true
$validated = $validatable->validate($data); // ['name' => 'John Doe', 'email' => 'j.doe@unknown.com']

More information about multi item validation can be found here.

Validation classes

php
<?php

declare(strict_types=1);

use LaraPkgs\Validation\Support\Facades\Validatable;
use LaraPkgs\Validation\Validatable as BaseValidatable;
use LaraPkgs\Validation\ValidatableCollection;

class UserValidation extends BaseValidatable
{
    protected function makeValidatableCollection(): ValidatableCollection
    {
        return Validatable::collection(
            Validatable::item('name')->required()->string(),
            Validatable::item('email')->required()->string()->email(),
        );
    }
}

 

php
<?php

declare(strict_types=1);

$validatable = new UserValidation();

$data = [];
$fails = $validatable->fails($data); // true
$passes = $validatable->passes($data); // false
$validated = $validatable->validate($data); // Throws Illuminate\Validation\ValidationException

$data = ['name' => 'John Doe', 'email' => 'j.doe@unknown.com'];
$fails = $validatable->fails($data); // false
$passes = $validatable->passes($data); // true
$validated = $validatable->validate($data); // ['name' => 'John Doe', 'email' => 'j.doe@unknown.com']

More information about validation classes can be found here.